6 ?% H4 ~9 X0 b1 ^9 a( t本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例; Z0 B6 w* G/ \* h- G! V9 _! @/ J
1 R% E/ V1 {; X6 @) W5 @- <div id = "computed_props">
4 B0 o, ?+ {% D" \* w+ y - 千米 : <input type = "text" v-model = "kilometers">
+ o j+ V5 ~& W3 W/ r - 米 : <input type = "text" v-model = "meters">. J: \3 e' y, [7 t. G3 t
- </div>
u( ]1 e6 @# H1 q4 Y3 D2 A - <p id="info"></p>
% s% ]0 H5 f; F - <script type = "text/javascript">% F$ t* s( M0 y, w/ P
- var vm = new Vue({) n7 `3 L0 N! E. d/ `
- el: '#computed_props',1 r5 D/ U. i' f# f. i$ Q
- data: {6 X. \! |; y' ?2 n
- kilometers : 0,
3 \9 G' z/ v6 o - meters:0
) E4 N# F, O- f - },
$ _. g1 O; o2 ` - methods: {4 M c- t/ W' u9 K
- },
, ^7 P* V' [ H M' \) x! }$ J" K. E - computed :{
- q3 @4 N+ g+ Y1 ~% Y - },
3 Y. z0 D9 Z7 v - watch : {
$ Y( f7 G( ~' [ - kilometers:function(val) {8 Z; o3 j6 @" D/ m @4 b
- this.kilometers = val;
( V* i, R! U! p G- u - this.meters = val * 1000;
- C- n+ P% |* b0 X - },
+ H- n5 P+ ?9 F! a+ P - meters : function (val) {
) |* q0 N' i" U; j& k0 m - this.kilometers = val/ 1000;
( x- y! S; k% Y7 l$ k1 t# h" R - this.meters = val;
# W, c1 F( h6 {$ F0 Z" k9 I" r6 ^1 g - }
0 ~# S7 l D9 c! n$ p - }& d2 M6 `8 F/ W
- });1 q: z5 |3 o: g: l/ ^
- // $watch 是一个实例方法
7 s8 f# W+ X G m- ~, M/ J - vm.$watch('kilometers', function (newValue, oldValue) {' h; Y' x8 p- P% M
- // 这个回调将在 vm.kilometers 改变后调用
3 t8 s! T$ h, k) ~/ L' l2 s3 m - document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
* q5 i7 b( r& O F - })
/ U6 Z. o* a& e) ], @- s# q% m# \! t - </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。
% r0 O! l/ s% P9 B; @# M3 Y, z( ?* {7 z+ f3 k
1 P7 X5 {# h- B
- t w6 y& Z$ a" u- U2 } |