* J- c. w4 |" x) V本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例2 u# n% x: }1 x- M0 q
) @5 l/ M+ Q% n' V5 N9 z" }' J
- <div id = "computed_props">
+ `2 _% t) e- P7 F+ a2 C! y: T - 千米 : <input type = "text" v-model = "kilometers">. n' [( J1 b& l" Z" I
- 米 : <input type = "text" v-model = "meters">. |0 X& f8 r9 P4 O. z4 A7 u
- </div>! M% T6 E# s) w# Q# P1 m
- <p id="info"></p>
# O3 }- I* Q" k- \ { - <script type = "text/javascript">0 R: h O5 U5 T2 L4 x9 l
- var vm = new Vue({
2 {4 c' B7 n( L% z5 ^/ z8 X6 L - el: '#computed_props',3 F5 ^8 }( r5 B) C q% z% t8 s
- data: {
& M% W& v( P4 O, M - kilometers : 0,
: J7 C9 g) X& I: ]4 S, P- x0 |/ x6 J1 x - meters:0
7 I( o* h, D0 ^* Y- t4 B - },
5 F0 @* a% s( e - methods: {
3 ?* I |! {4 {/ R4 q+ F1 V - },
* O$ K7 `7 U! I4 e. P: y' C+ _2 ? - computed :{
' [) c2 J7 h/ @ - },& N" Z0 B2 B$ r4 F, P$ J- x" \2 q, P
- watch : {+ u( j" k( T5 d% a7 A+ ]
- kilometers:function(val) {8 ]/ r& S/ o/ G9 V0 g* \
- this.kilometers = val;
. e! v- x. Z7 ~) |3 W3 E - this.meters = val * 1000;( Q9 q% k4 C2 u" \+ _$ y
- },$ f2 _ t/ m% {0 D( y6 M6 s
- meters : function (val) {/ g5 i9 ^) R0 Y1 q+ u& [' C
- this.kilometers = val/ 1000;
1 R1 q4 w J7 B; B: O" A+ i/ t - this.meters = val;8 d; u! m! L6 I+ k
- }
: f2 M% @& L2 H' [6 ^' ^ - }
8 q* K; |6 a1 Y6 V! `* ]( z; F - });
1 w! z) L% G5 X/ J$ l/ X - // $watch 是一个实例方法
) h" Y7 k5 x1 L$ S; D/ t - vm.$watch('kilometers', function (newValue, oldValue) {! I! J P# j( t) e3 R P- u
- // 这个回调将在 vm.kilometers 改变后调用
$ K- Z. n) G6 h - document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
/ Q; x% e3 B% m Q, V5 A0 z3 N+ f - })& J) x7 H7 I$ M7 x) p
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。 " T( i" w6 {7 l9 C% I/ c
2 G- c1 j! G# O+ y* t/ x
% L, p! \2 l1 j# ^& G
& v/ g3 u. Y0 ]% o, n3 w0 ~( t3 R |