. B0 f) r0 x: j4 A* W' p1 d
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例- @, |: E9 u& d/ s8 I
( `9 P$ a5 a* P4 J
- <div id = "computed_props">
; d* U- h0 M1 ?0 e - 千米 : <input type = "text" v-model = "kilometers">4 _6 A. a3 N4 K9 T g, r5 e
- 米 : <input type = "text" v-model = "meters">% |8 K5 n; j( u& @& H
- </div>& R. o# z4 @( t0 u; }: x9 \: S! m
- <p id="info"></p>5 K' l( ]3 s& o' c( }3 d
- <script type = "text/javascript">
; }3 K, j/ p! G, Q6 J - var vm = new Vue({
7 u3 f: g& R1 q2 p$ L - el: '#computed_props',
' v/ P, }, J+ o( \$ ` - data: {
: x: r, g6 Q+ B4 ^$ [, L - kilometers : 0,
+ [! i8 W2 E3 | - meters:0
5 T9 M: f1 P m, p+ |- e3 Z/ V$ v0 ~ - },
O& R# f: K# @ - methods: {
$ L- w n6 \3 [$ ? - },5 C7 h6 O4 H; Q, d
- computed :{4 H" o7 S$ G8 X
- },1 `& @1 Q1 D% r1 I" |9 Y5 U5 {
- watch : {& O5 j W& v) Z6 R# |
- kilometers:function(val) {
6 k( Z2 U7 x" j3 m9 M$ L$ Y - this.kilometers = val;
& w% i6 J4 t% X2 X - this.meters = val * 1000;
: u& d9 K" s+ T& ^' ] - },
& ~; E) K& E. e' J - meters : function (val) {0 `# s0 l) y! q. P( G; K/ }( W& r
- this.kilometers = val/ 1000;0 e L" O& L/ M
- this.meters = val;5 u) _+ B2 I$ g0 E& v
- }
~ x' |1 b1 B, H% ~& {) r - } l/ ~# S {6 J- r. M: z( J3 z7 ` J
- });6 j% t" G2 q( c6 Z
- // $watch 是一个实例方法: L! W2 u' v! z. d7 t9 V
- vm.$watch('kilometers', function (newValue, oldValue) {' N4 t+ O5 u5 I) J
- // 这个回调将在 vm.kilometers 改变后调用: K: T5 {2 K6 ^1 y5 U
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
, K; c0 N* L- t9 T: t, j+ v: Y - })1 |' x% f/ L0 ^+ s& |3 u5 ?% Q
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。
) e) J6 a2 i" _, a! T$ e% {- a# _+ S% R( N0 K# _: E
$ P! c# m. h. X1 a
1 g, B/ Q# ^/ M% h9 ^: r |