1 L4 h* E9 k: m! }9 B5 ] J* g& `: T
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例9 h. j) s1 |& c/ `8 y% w
J, E7 [4 b% Q M; w0 L5 b6 W- <div id = "computed_props">
2 `9 N [$ t3 b7 M. o - 千米 : <input type = "text" v-model = "kilometers">
H; c1 P, p6 B7 ~8 D% H - 米 : <input type = "text" v-model = "meters">4 W8 K. O6 v! d8 K# r4 g
- </div>
/ r+ |9 i$ F( D1 k/ z - <p id="info"></p>
) n# X4 s1 a* b! E8 ]# u - <script type = "text/javascript">
( X3 `, R* P/ ] - var vm = new Vue({5 ^+ F' |; z0 E% U
- el: '#computed_props',. o' `( Q3 I, D
- data: {% ?4 i" b0 A4 G
- kilometers : 0,2 ^' v$ J5 L/ p- j7 y, s
- meters:0
6 |8 Z2 X3 Z8 p) p# n0 C - },
, q* |7 @& S/ ?! }6 D5 I6 l - methods: {
* q( @; Y( L T - },1 Q; }# ^7 h: R
- computed :{
0 u0 [. R3 M. ^: [; Y - },
' |. Y$ \- q: v - watch : {
( {4 F8 [$ d+ V/ E6 _6 ?0 E- n - kilometers:function(val) {4 z# t' H- e) D7 ^. c, m
- this.kilometers = val;
+ l, `4 P, |) T J1 t, z7 U" {. `( m - this.meters = val * 1000;
* ^7 m0 K& O/ f/ o - },
1 C; c R" E/ w( v$ x1 |' h - meters : function (val) {
$ K) l0 [) ^! s U( o& f- ~ - this.kilometers = val/ 1000;4 o9 ]0 p" b" P8 X9 C- o+ _
- this.meters = val;8 X/ k6 p' x) g. O; U% P4 D
- }
9 J* ~- c4 n; u0 q3 p - } g7 V A/ q$ U, i" G
- });
" y6 E' V& v" v; r# |% [ - // $watch 是一个实例方法% \) h% V7 _% v0 |
- vm.$watch('kilometers', function (newValue, oldValue) {
) ]& ~' b# W( ^" W+ d5 q2 o7 l - // 这个回调将在 vm.kilometers 改变后调用
9 l, G. s# S d/ a8 h, y - document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;: y9 p6 d, T! [
- })
# _6 P5 ~/ g1 o' n: D3 v7 W) E - </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。
, J3 Z/ C% V: g3 I* b! l2 Z' Q
, t# ~+ `3 r( y+ ^! c% e6 O0 O* Y/ \( l, L8 ]2 E
6 H+ w# J& s9 {& L: y
|