$ p! A5 T e8 D. @, `7 _本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例" e, Y( k% j. b+ M; z
4 ?$ o: F. w6 i/ ]1 a5 w: B
- <div id = "computed_props">
6 v5 L1 O: e) Z4 r - 千米 : <input type = "text" v-model = "kilometers">
, q x' d( A2 [ - 米 : <input type = "text" v-model = "meters">
9 G S. K) u5 M: o V g Q - </div>
0 ?( a1 @# P- ^# e" o - <p id="info"></p>
( s4 |! b' x+ a9 u6 v& F - <script type = "text/javascript">( G6 F( c$ w# P2 D3 |+ ]3 ?2 \& l! X3 l
- var vm = new Vue({
1 s: h! C( i( l6 W! [9 J3 L$ n - el: '#computed_props',
+ P6 I2 [1 D$ m) d) C, E - data: {, X' j6 w' x% ^
- kilometers : 0,
! s' K/ ^/ H+ @9 j: f/ _8 k& y - meters:0
! J. D& e; O: B1 S - },' \, \: z7 W ~/ d0 S
- methods: {
% H, a$ k7 i/ Y+ Q% {1 D% B - },4 ?! B/ x) F# V8 X' N
- computed :{
, b Q1 Z) _1 o/ b& }; J# S( I# L - },
! I: K( q7 L$ E& J) w - watch : {
: z$ W/ B2 Q. K2 { q; Q - kilometers:function(val) {* P- V7 f6 d5 ?. G
- this.kilometers = val;- W3 K/ D; v$ _2 W3 N2 W
- this.meters = val * 1000;
- z: N6 h3 }5 W% J4 \. i6 Q* h- A - },% B/ D8 `/ l/ y; B
- meters : function (val) {5 i6 g5 X/ _- Z# {
- this.kilometers = val/ 1000;
4 `9 q% Y; u2 p+ `2 v2 ~ - this.meters = val;: V: A, R8 \. f
- }
8 c' \6 x3 x% r/ v+ y - }
; e6 d8 o* \4 [: P& A: u$ ?/ C - });
: s$ e2 l3 ?8 C/ x3 C) r: t. ?0 t, y - // $watch 是一个实例方法, e8 R- f* G8 l2 C2 x7 e- J8 { B$ q
- vm.$watch('kilometers', function (newValue, oldValue) {& L) ?" T; X8 ^9 ^+ F
- // 这个回调将在 vm.kilometers 改变后调用
3 |) T2 }3 G, q! V4 Z - document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;3 J5 @) _% ~) `3 M! j2 R( E/ S9 N8 k
- })) h, f4 j3 M+ B r/ S
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。 * _1 n- A7 l% u4 p; j7 }- n
; _9 H4 Y* W4 O' M! j$ @' _
1 {9 E Q6 c$ e0 J
- M2 N9 F+ U: ~( b4 u8 ?
|