& u+ A3 b2 b4 f
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例2 Q, d$ \2 u8 D- G, N& I6 o
! k$ ~' m$ c9 x, U( N$ y- <div id = "computed_props">. n" V$ s4 k; g% g9 _9 v7 e
- 千米 : <input type = "text" v-model = "kilometers">' M* q! h" u+ X7 I7 V4 Q$ z7 K e
- 米 : <input type = "text" v-model = "meters">
/ V* j7 h$ @- J. J - </div>6 m( n, h; x* d0 J% x2 e2 U
- <p id="info"></p># o+ o8 O: y* ?5 Q
- <script type = "text/javascript">7 x6 V5 U& T2 C: }: \
- var vm = new Vue({2 [! j6 s: J/ ]4 z' Q
- el: '#computed_props',
; R. H2 ]4 m! I0 I) t3 X" u% N: V - data: {
0 d7 d, }; P* m, C S. ] - kilometers : 0,/ F9 }. K( Y) H
- meters:0
$ z/ L2 K! x5 n8 z$ I - },0 }: {- B3 N- B& `. F/ m ?
- methods: {
1 k; j- ]1 u' x/ v# z - },4 C9 ^& r- }/ l# B2 e
- computed :{, B3 L% r$ z( s+ Y. y# M; X9 }5 E
- },
4 I2 L- E9 t$ H0 n2 x! r - watch : {9 P4 e. p5 W: Y' S8 ^ B& v6 k
- kilometers:function(val) {: \3 p; v1 ? L9 I, f
- this.kilometers = val;
( C/ @9 i, M9 r - this.meters = val * 1000;: _) l( D; c7 H, A: S% _
- },
. o& s# u& h, R) C7 p - meters : function (val) { v7 N4 I* I# o o( h; R6 _
- this.kilometers = val/ 1000;
9 r Q1 U7 ~& c: d - this.meters = val;7 t7 p: ?: H* b" I5 B4 j, q
- }: F& m; a0 E: k/ p4 K# J ~8 O
- }- l- f3 l$ W' g
- });
" q. b' c* a( \3 r f: K6 ~/ r - // $watch 是一个实例方法
. c8 j+ p2 R0 R2 I$ d - vm.$watch('kilometers', function (newValue, oldValue) {5 _0 C/ Y4 y1 r
- // 这个回调将在 vm.kilometers 改变后调用! m4 j( P/ V8 Y" ^) `/ I' m' E
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;/ V$ U1 l6 X. y l& ^! u% I
- })$ K9 `6 w$ W2 M/ l/ l/ d
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。 ' q, Y' G& D9 ^* r9 s% h( V; x7 L
8 c, K U# T6 K
# `; v. Z! O w9 a. d! S2 {" n- f: G9 M
|