- h& W5 D6 G: r- a
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例6 f, S4 j) r5 P; V
# ] U2 D4 V) H# G/ U9 c0 p( `+ r- <div id = "computed_props">" E) ?! u# b4 V5 \; Y
- 千米 : <input type = "text" v-model = "kilometers">
$ l7 q c! @# p b( O6 N - 米 : <input type = "text" v-model = "meters">8 m0 o& N& \1 Y8 q; C+ r `( w
- </div>0 t7 B+ U6 E7 @! `
- <p id="info"></p>2 M0 q. X6 X% y3 w5 L
- <script type = "text/javascript"> h: c5 D4 M& H, ~& z& f+ v+ T: g
- var vm = new Vue({
% O3 E9 d/ R- H) M6 ?9 f$ k - el: '#computed_props',- K! Y5 K8 @8 l' o
- data: {
7 q9 d$ p1 j7 B$ g9 S - kilometers : 0,
/ [1 m: s0 F, [+ K - meters:0
! o6 x: ]# k' d) T7 J( | - },
) ^3 P+ c0 s4 e" S: K - methods: {1 f: N/ x3 `; B# j3 k S; V& m& w
- },1 R# c: R1 t, X. N8 ~
- computed :{
[7 E( z% v8 k Y+ C- R5 ] - },8 f: ?: z' l2 ~& m: o: I8 h
- watch : {. c/ T' f _4 c5 e3 Y: ~
- kilometers:function(val) {& b# g! K+ n' t' G% y% F
- this.kilometers = val;
0 n4 U) A$ I7 i- N! r$ ^ - this.meters = val * 1000;% q, y$ v5 z; f6 S
- },, w; @' u: U F- y! D( N
- meters : function (val) {- M0 H' |" k! O3 O- {: L
- this.kilometers = val/ 1000;
4 f% C G8 L/ V9 Y& b1 v" N - this.meters = val;
3 t; K# a2 l, Y* k6 w. w - }" t! {! M7 o! v6 _
- }4 H/ V L& o9 Q g# F( T3 U
- });; K$ p) d% w' q4 E
- // $watch 是一个实例方法0 v5 e* @4 |5 j: X& J
- vm.$watch('kilometers', function (newValue, oldValue) {
M _ W3 Q' P1 N - // 这个回调将在 vm.kilometers 改变后调用
3 m N4 R( V$ D1 w" z5 p: q0 g& l - document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
1 {- @( n7 U: ?: K! H% E9 v5 t - })5 a2 y5 Z$ E$ w* {8 d
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。 : a) m9 G1 @0 q @- V! s
6 C, y' J5 q# }
$ Q" k3 X1 z! ]8 ^- b y) t
3 V; I/ L8 N3 x4 f2 V
|