2 q" ]) N: I! I/ T5 f3 j本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例9 p- L. _' ]8 }: U
/ L. X3 N |3 e9 j8 V- <div id = "computed_props">
5 ]: \( Y: K7 a& ], ~ - 千米 : <input type = "text" v-model = "kilometers">) ]1 c9 e- l' K
- 米 : <input type = "text" v-model = "meters">) W1 W3 J7 s1 L+ Q9 S- C+ \7 [
- </div>
8 T$ s5 a* i: | - <p id="info"></p>
: A) {8 w: r. C6 N% ~; n - <script type = "text/javascript">
; l: M7 _7 X8 N& g - var vm = new Vue({
# O* m ]4 D+ ~% [, f1 m - el: '#computed_props',
7 F. ^, K2 b- m, z - data: {# \' e* h: L, o
- kilometers : 0,
' m) n/ s! D5 d2 e. j$ ~" } - meters:0
- q( ~; r J5 g9 @3 ]; O" O$ Z6 v! k - },
6 @$ j. Y% l+ d7 J1 g# b - methods: {; D8 _9 ?8 k# o0 {* b: o; |: R+ K
- },3 ~/ F, Y# b5 {2 S
- computed :{
1 c2 T4 ^ D( n- O T. w - },, _" A5 Y; b) V9 v9 t
- watch : {* I5 ~/ Y7 f4 T$ }3 W; Q
- kilometers:function(val) {
- I$ ^2 Q1 n u% Q - this.kilometers = val;* t) H4 M, r! D4 X" H
- this.meters = val * 1000;: W0 r7 U$ \6 K; l( t! H7 r
- },* b& k _, t% i+ L, N+ i& h; V
- meters : function (val) {
/ L- v( Z1 u" Y5 x - this.kilometers = val/ 1000;
) L7 \* f8 m6 x/ f" ?+ Q - this.meters = val;
8 G: }1 C8 G# M5 m' T - }3 l5 x8 o0 H- H/ ]
- }
& m+ m i" o3 ^! b/ a5 R - });) }+ c9 o$ g2 S5 R& l, Q
- // $watch 是一个实例方法! C5 u: l& T* P! X" {
- vm.$watch('kilometers', function (newValue, oldValue) {) A0 h% u( i; p5 e) w, L5 S5 d
- // 这个回调将在 vm.kilometers 改变后调用
7 U; _& v' V- o5 J, ] - document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
' _/ e8 _, t! [5 } - })
, E$ A6 j3 x3 z( W: Y: v) R' H - </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。
6 }* h! q3 Y) r8 [, y0 |( W
7 q4 N5 W. i6 q% I* q& S
% ~1 o: k Y" X3 y* M8 V3 t% c& D) Y( N y! o5 P( t" J
|