3 A5 ?0 O7 c4 ?- \$ @# d# v Y
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例
: f0 H+ y4 X$ c0 {5 t- Y/ B5 Q' k8 T) P" B( ^1 E) G% E6 g
- <div id = "computed_props">% n9 [" x* E6 B* B. ~5 g0 g
- 千米 : <input type = "text" v-model = "kilometers">
r2 c, G! I* _! t2 Y9 B2 v - 米 : <input type = "text" v-model = "meters">
* k, ^* W- p7 v - </div>
% y/ P7 }& B1 c4 v# L, b" O' Z - <p id="info"></p>4 s( |' v, Y2 Z+ y' e9 o% S0 R G
- <script type = "text/javascript">$ y1 L1 F! z! t
- var vm = new Vue({+ j5 }; w) b1 s/ q% B/ ]) T: }
- el: '#computed_props',8 g: _& Y" N) X! P8 f t( ^
- data: {- V! C8 p/ A& R) f6 @ z/ O
- kilometers : 0," i* Z* s. h e
- meters:0# _3 f4 n T* ~
- },
* F9 y( S2 h4 ]- o1 f. b - methods: {
/ Z6 b: `# ]6 y6 T4 p9 E' L$ M - },
3 P. W) c! M+ \/ G% a# ?6 B d - computed :{0 d" Z* R' K+ k4 B( X' f5 n6 G
- },0 T5 `/ y: k+ G2 C
- watch : {, C+ t& [9 ]1 Y: U/ L
- kilometers:function(val) {1 i' U, ?$ O" U6 C! C
- this.kilometers = val;
7 c+ m9 d6 m; O: v* U) V1 X: n/ l- `, K - this.meters = val * 1000;
+ Z7 z2 ~. A" N2 o - },
7 i0 T, K: I; h: I3 p - meters : function (val) {4 p+ B m; ~# Q* F/ [3 n
- this.kilometers = val/ 1000;( \/ C3 h7 R8 `4 @9 h. e& u, Z
- this.meters = val;
, d- z* B2 M3 y7 F. A8 J - }
& S" M8 q+ K$ R0 A6 N - }
* W8 p$ B5 W6 F* n* } - });
* _; y. P; i: G6 [. L - // $watch 是一个实例方法! N3 R1 l; p, B, q- A) A
- vm.$watch('kilometers', function (newValue, oldValue) {
6 v, y2 P1 g7 p - // 这个回调将在 vm.kilometers 改变后调用
1 Q8 U" J9 d/ I! H2 S' B/ ` - document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
* R }+ q- D2 i& | - })
& u. {/ q0 q5 b$ F; O" A - </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。
# l/ L$ u! b+ l, B5 B5 L/ P# n: D1 [% J; S I0 T0 \" p$ J
! x+ g$ i' Y4 V0 B0 R9 t+ s
. O8 b2 ~# t5 N# k' G1 T |