- M) x6 C( b3 \2 f本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例- m' w# ?6 w# u
# L! W4 G9 Z, W9 C. ]: L$ [: j8 }
- <div id = "computed_props">
/ i, k L( S6 { - 千米 : <input type = "text" v-model = "kilometers">/ @) R( ]% i9 v
- 米 : <input type = "text" v-model = "meters">
0 b2 ?1 }& L( F - </div>
& b* \' q$ P# A4 y) A - <p id="info"></p>
! Z$ G( m$ h1 ] - <script type = "text/javascript">
. D8 S: @) m* c- \ - var vm = new Vue({
. E! L1 J3 N* j/ w4 S( l - el: '#computed_props',
: d4 c) P/ Y. h1 R2 J" I7 B. b: a7 g - data: {
8 Y: | Y/ n0 X* v2 x9 B7 u2 ? - kilometers : 0,
$ q: ?/ F% d& B: P" k - meters:0
2 @& i: Q) u" _' C9 u7 s9 [: [ - },
3 F; f# d' b; F9 L0 Z5 z' J X - methods: {( N: p" z- Q- F3 \
- }, R8 X1 p0 |# h% W, G0 a
- computed :{7 B6 e! y( e; j$ U! F. G) _
- },
$ q, Q) ]; R3 k' r! v; L7 }- m) X - watch : {
2 ~3 t; z1 I6 t) O1 [ - kilometers:function(val) {# n% A5 g+ E/ D6 Y* G
- this.kilometers = val;
+ \, r. [% m' Y - this.meters = val * 1000;1 j X! C& T: D# H
- },( F4 \3 D. y+ o* g5 [8 {" S9 p
- meters : function (val) {
( A# m! n! p) ]" i1 b - this.kilometers = val/ 1000;
. H( ~ I* E* S - this.meters = val;7 J- E& I/ }* K
- }
- `3 p' p8 Q; K8 x& j f - }# `; h, C% C$ x( h7 P* O" j( Q. w
- });
+ |1 V" d+ N, o0 _6 U' f- }( n% r - // $watch 是一个实例方法
6 i' S' C* X8 @8 _; D - vm.$watch('kilometers', function (newValue, oldValue) {
4 b% A( w: n$ \& P - // 这个回调将在 vm.kilometers 改变后调用" h2 S7 _+ n% o9 T
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;# e2 U3 P. |' Q6 U) H$ H
- })
u$ }( |7 j6 O7 `, { - </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。 1 r& H( q, f9 B9 ?; ~% b" w
7 l" c. F- Z* U, _( S* _" M
% j, q( G+ f3 _$ o( S
X3 ?3 @4 l0 S5 Y* S0 z' _ |