+ ?; c5 W7 h% {% F* p4 o8 Z9 l8 ?本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例
" a2 u0 k1 o+ M- p
+ ` E8 N/ ?3 ^, G" b- <div id = "computed_props">
, F( r& x0 w0 P& ^- T - 千米 : <input type = "text" v-model = "kilometers">. t4 ~! s1 E" o' P
- 米 : <input type = "text" v-model = "meters">! x" x9 t, w* A; j: r( C
- </div> W. ~; r* b& p7 I- X
- <p id="info"></p>
; k& T! g4 ^: e: V* M8 z - <script type = "text/javascript">) l2 s$ i) J' j' ]
- var vm = new Vue({
) ]2 m' q$ F2 D# k" F j' D - el: '#computed_props',; r! T$ e* }+ t! ?" e
- data: {# Z4 s7 E j( W
- kilometers : 0,
% L1 e* n4 I& _, e* _% F - meters:0
! h* N5 N3 E6 | - },9 {# W6 V1 z. D) f8 l3 t1 G! g
- methods: {
/ Y+ k" W5 O7 D ]" l - },
- Q+ B" C+ }; q9 M9 b6 E - computed :{
" n S( S6 ]# L& V - },
) g- L+ L8 p0 X/ s) q - watch : {) p4 O: G) s2 W/ P
- kilometers:function(val) {
/ ?: o" t' ]( z/ ^% e - this.kilometers = val;2 W9 V2 o5 V8 h) s" z
- this.meters = val * 1000;
. B' ? R* A0 b - }," m) X5 b6 f% o9 Z8 c
- meters : function (val) {
# w3 J" w5 c9 ~1 w - this.kilometers = val/ 1000;8 s7 R% r( `; C- m# h+ c7 `+ V
- this.meters = val;
C( i" v* d+ o/ r+ `7 |4 e - }
+ \/ q# [( n( ^2 D - }& I8 c. J( P m; Z- p0 a
- });
. E* N o3 e$ H1 A$ r - // $watch 是一个实例方法1 [5 ]8 @( i4 D
- vm.$watch('kilometers', function (newValue, oldValue) {% Z8 M3 z* `% L4 ]
- // 这个回调将在 vm.kilometers 改变后调用% r( C; \7 r d
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;# I/ J! N! V( I3 p: Z- R/ @; g
- })! s" r$ ?$ D; g5 s
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。 " X/ U6 R+ A/ B) ?! y- C- s) x5 H6 ?
2 a% R: D1 t& I6 M& b. U8 f( t1 k9 ?; E. {; u$ M5 N3 X
) _4 }, j2 c! G+ [4 K, E |