1 y$ _! \/ |; a" F本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例
/ V. T8 _& q# G& X" E; K
! K3 ?( e* l$ c: h3 c" f7 j- <div id = "computed_props">
0 Y' V$ }0 ]0 t. G - 千米 : <input type = "text" v-model = "kilometers">
; @9 v0 ^! h2 G3 e) ` - 米 : <input type = "text" v-model = "meters">
" U/ ~/ M8 n P; G - </div>
]" f7 M& Q( i- n' o - <p id="info"></p>* C( V8 Q* t5 j$ i/ G- `3 T D% [; I
- <script type = "text/javascript">
- A/ R7 p0 s, j4 A8 y- { - var vm = new Vue({/ z' P/ r0 K8 J* U
- el: '#computed_props',4 p+ i* m7 F0 R& A- m/ H
- data: { ?. I- L' ^. S5 S# K. j$ l3 w# u( w
- kilometers : 0,1 ? \9 s& ?" Z) V( j
- meters:0; ^1 x) I+ { A5 l
- },
' [7 q# R1 ~! ^; Z+ f, A; [ - methods: {0 e, s& q1 K5 z7 m! h; ~
- },; D" v4 t1 @% y& Y& p
- computed :{- R& I% Y( A4 W! t. }
- },* L$ I* Q M& B0 `. O0 G4 L
- watch : {
& w- I: @, N9 n9 w0 @/ t4 E) w - kilometers:function(val) {
; M- d5 z$ [" j: ?+ A - this.kilometers = val;
, S. L9 \7 @: B; }' E! y - this.meters = val * 1000;6 z+ m& N. d. H$ Q8 T! b( {. x
- },9 \2 p, a) a( r% R$ d4 `
- meters : function (val) {
9 y' ^- H9 g$ q - this.kilometers = val/ 1000;0 O' K' [' \3 K$ w# e
- this.meters = val;
- s3 Z, Z6 K' I$ A, S: P2 Q - }
Q: x. s2 c5 L6 n; l - }
: U+ R. m m3 m$ [* U- q - });
: I0 f- [! H0 n |5 m& B( i' w - // $watch 是一个实例方法
9 R7 Q1 @3 H* I$ U' _6 r - vm.$watch('kilometers', function (newValue, oldValue) {7 U5 e6 b: W3 G) T9 U& z
- // 这个回调将在 vm.kilometers 改变后调用& K% R8 I. i) _) Q7 q6 v
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;6 }; p7 A, D7 [% I+ K- v2 x
- })
% @# G5 |* _! [5 [ - </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。
|0 B5 }7 h6 p8 u; Q* E
5 A3 X' C. w0 D' U f$ ?8 t% ?# Q) n* v* {; a7 H* q! N
3 W$ e* J5 M. h, a) l5 ^+ B
|