2 v( {, F) y- e6 o8 n, Z4 {6 {本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例1 @0 V& y$ S- C8 _9 t3 V! |# v) J
3 x4 R; i1 @8 X1 o, r, h- n; E4 h: p
- <div id = "computed_props">
3 y- A& }9 ?0 Q% `5 a - 千米 : <input type = "text" v-model = "kilometers">0 c: n) l U0 {% m3 M$ V
- 米 : <input type = "text" v-model = "meters">3 l$ q' n1 n) I% m2 N" ^
- </div>5 }( _ i/ t6 W. M5 y5 |* K
- <p id="info"></p>
3 w5 H! f) l0 C" K% L/ O - <script type = "text/javascript">7 a9 Q& D! s. g7 Q5 R# j. E
- var vm = new Vue({
& o$ j( U; |! J( [: v/ P - el: '#computed_props'," c, ~/ [( @8 \% Z% a1 W* q" v: |
- data: {! E6 N* u2 T6 Q- H' U& e2 m
- kilometers : 0,) B( L- ^. h6 [+ v9 f. q* E5 U2 \
- meters:0! G* R. y5 m! b8 [% O4 m0 R
- },! I; l* ^0 c4 G
- methods: {* |; j ?; h6 I3 A9 b
- },
2 C, _+ O0 ^) a3 g& |( z# @ - computed :{" U; K/ u$ P( x8 a9 k$ H
- },
6 f8 n6 u1 n! ]- o$ M( A- z g - watch : {
3 K) D5 q; e$ S9 S6 |+ b - kilometers:function(val) {
6 k! {- A) V7 D2 D9 g - this.kilometers = val;( g+ `8 {: V( K0 ^
- this.meters = val * 1000;1 E& ~) x {9 R& B# g, Y: n
- },
8 S5 ~, [2 T7 M0 x - meters : function (val) {
0 n2 C8 o6 D. O- _# ^) m5 m' F$ w: d - this.kilometers = val/ 1000;7 q! D& e& C- K! W
- this.meters = val;
3 m- [! `2 h6 H - }
2 {' X! V' C( ~- v$ i& a9 @ - }" t% P2 D- y* q. J+ b
- });
9 b% A+ F, x6 F* c' E - // $watch 是一个实例方法+ N; R! M r, _! m9 u2 A
- vm.$watch('kilometers', function (newValue, oldValue) {
. t# H4 D% p0 X/ d7 Y) e - // 这个回调将在 vm.kilometers 改变后调用
0 W, L6 _1 j+ @ d( t - document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
+ D1 X5 J, p" o B0 z7 {' o - })
' v4 r5 F/ b% I: G6 b2 P - </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。 8 _0 m9 f; y: b
, S! e% e& G- G2 _, R7 l. O
7 d+ u" j7 Y q
$ w6 H- J# I0 u |