2 |. ]4 f+ N/ d# q
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例9 _2 Q/ I* b, d
0 J0 \4 W9 \' F1 @- <div id = "computed_props">. W4 I4 k, Q( x4 {
- 千米 : <input type = "text" v-model = "kilometers">8 c& H9 A% P( o9 y' ~6 x. j& ]
- 米 : <input type = "text" v-model = "meters">* r8 P8 H! ~- B* h) e; Q
- </div>; j% z+ _% u2 ?) u) w; Z
- <p id="info"></p>
3 }$ _/ m: m/ j - <script type = "text/javascript">- \: ?. \7 |- r1 b; s! D8 S
- var vm = new Vue({7 t. r. ?, X: ?( x% N2 o! K
- el: '#computed_props',5 e4 ^2 g6 y3 i7 E- N
- data: {
0 u& b0 y. V0 X1 _ - kilometers : 0,% B( r0 ? U& w! P1 [% `
- meters:0
" }' v) D0 _9 U - },& s( |% L- e. V$ ~, ^' n
- methods: {. B# {+ e- ]2 G: g
- }," t) c2 i% K* o0 x; V
- computed :{4 t" z+ \, x! V' ]3 r
- },
+ E: k8 v* @8 v) I" @: J" Y9 | - watch : {
+ e3 o6 z, F3 H4 {: N# v - kilometers:function(val) {
. Z' p+ b$ o, ], _. G - this.kilometers = val;7 K* H2 h2 ^7 C& x2 z5 M* @1 f7 E
- this.meters = val * 1000;
: m. \2 k8 ]& ]3 x% B - },
; }" y/ v" r. L+ W - meters : function (val) {
' Z8 Z( p- q, j4 L - this.kilometers = val/ 1000;
9 r) U8 o" D7 A$ u1 a; F( o6 b" b; ] - this.meters = val;
2 i. Q* v3 e- K( u$ ^: Z - }
; c: u. q7 S0 e7 v( i3 a" \ - }
. S8 p" e% c- u: H& e - });; K. Z$ A" d; I0 x3 x
- // $watch 是一个实例方法
; C& m, X+ W7 y7 R - vm.$watch('kilometers', function (newValue, oldValue) {
9 @8 G3 d$ q- M8 k. K* L - // 这个回调将在 vm.kilometers 改变后调用- z* H* f- Q& y
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
1 J- C/ S9 v0 ], y: E2 Z0 k, Q - })1 y; t* N" x, n# f
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。
3 [2 u/ `+ J! T8 u& v7 Y
6 D" e3 K( t* h6 p
0 W7 g: M+ Y7 x" F8 w# v3 E
, K8 l7 @5 H4 T |