4 @# g, V' Q m
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例
, g1 K6 B0 k+ Q [6 A2 Q4 W; y& q) I. q) r; M3 C! e
- <div id = "computed_props">% f; o/ [. \4 p1 j3 O3 q/ y
- 千米 : <input type = "text" v-model = "kilometers">
# m7 M0 Y: \; M/ o" c - 米 : <input type = "text" v-model = "meters">1 E7 f" q+ o8 v; x- p; V2 R8 h
- </div>8 Q1 _/ C, q6 R9 C2 P3 U2 ]6 J
- <p id="info"></p>
2 a! ^7 `* b5 c: g# l& \2 v - <script type = "text/javascript">5 S8 H! p3 L, b' F) @' h c1 @
- var vm = new Vue({3 z+ M5 U$ n" q( H
- el: '#computed_props',# q% X0 V3 ~! U) O
- data: {& C7 m! b. y$ A. N; ^! m; X& N
- kilometers : 0,
" ~. O* N" l: T) } - meters:0
' e, O' U( n7 Z g# N2 K' T& N - },
& l* [. u% ?" [0 N7 J/ B - methods: {
/ [: O8 t6 g0 J3 ] - },
6 @- S9 @9 [+ {* m. X - computed :{
+ W5 k% x E5 j; y- h" v( j - },7 q; G! M0 I; j6 P
- watch : {
: W& F* L6 F7 z - kilometers:function(val) {
/ i, h$ w2 J" ^+ r7 e - this.kilometers = val;
0 v9 t3 G7 R" ]/ B. k - this.meters = val * 1000;, M3 i5 J8 b8 L. |9 E
- },
& c! l U+ e' q - meters : function (val) {# y0 C3 ]4 r' u* p4 I- n6 y5 \/ M
- this.kilometers = val/ 1000;! _, r" R. W$ R5 n# ~
- this.meters = val;
1 ? I9 _6 R2 M0 h - }$ x$ u, i- {9 v- {$ I2 R
- }
. K& X4 e8 m# w r/ ?! G - });
* P5 i7 N" l4 t+ j - // $watch 是一个实例方法" n5 ^1 C+ \; _* y4 K9 Y7 I
- vm.$watch('kilometers', function (newValue, oldValue) {0 d3 o% l) [3 d
- // 这个回调将在 vm.kilometers 改变后调用0 S% X7 f- V" N* ^+ ^
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
, e# J& M* N- {. j! d1 x - })
+ m1 y4 _ R2 I1 I6 }! @ - </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。 + U- l, R& E5 x$ r8 C
7 X/ P8 N+ \1 g- U) J$ ~9 b
: s: Y% L2 @4 N
! O! u0 J% S3 O5 ?- s/ ] |