* s6 x3 |* Y- N% D3 K- d8 P7 o3 }6 _
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例' U4 ^( \' q+ p# g+ |" T
" t0 ~! q1 G- c; G4 n+ ^. ~
- <div id = "computed_props">& y+ R5 @: q* X
- 千米 : <input type = "text" v-model = "kilometers">
3 d; i3 o! U f. t; V - 米 : <input type = "text" v-model = "meters">
: }2 E( G& B- `, Y8 r - </div>
: j d+ ~& Z' h3 c - <p id="info"></p>8 x- k! Q! S$ c2 l+ Q
- <script type = "text/javascript">$ v6 I" Q! _9 D# L9 y2 L5 w" e
- var vm = new Vue({: e; A9 m8 j# s( }3 n7 u
- el: '#computed_props',; t9 _- J' |; k" D c/ d [
- data: {: T4 R( x( w/ S+ ^" \3 ~! _& g
- kilometers : 0,
; p9 h* D: X; w* N% F/ }( Z - meters:0
, r4 N, b/ N: B) \; @, u - },
, e F$ o: w8 V+ F" ^& D! M - methods: {
8 u6 k9 a+ Z6 Q0 q3 m' _8 s - },% f, [2 r6 y: `- i
- computed :{
: X& `- y. k$ R. S# o* m: Y6 A - },
/ [9 M* z& ?0 A! V4 A3 }; E - watch : {
# f) Z- z. x# ]' |' Q, W( ^ - kilometers:function(val) {
; _) [& F- Z7 B" @5 e - this.kilometers = val;
F% {4 {" P0 X. g - this.meters = val * 1000;% r5 P8 A4 X5 W
- },+ s5 z/ U. p6 x! x1 F
- meters : function (val) {
5 b' A: c7 _/ w - this.kilometers = val/ 1000;
1 m- S$ b% O# D5 H - this.meters = val;
5 _. n% m3 _9 b& n& U - }
2 A7 G2 b, h" D9 ]7 p - }
& O0 ^" A, H" j3 O5 |# i3 j - });( R) @! X. _9 F9 O( _$ o# B G0 _
- // $watch 是一个实例方法
2 C, R5 s, o% p" e. ~$ C - vm.$watch('kilometers', function (newValue, oldValue) {
6 M" e" d4 J' q - // 这个回调将在 vm.kilometers 改变后调用% D7 a0 O$ r5 e7 z+ }% @. Z
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
( C% F& J$ m& S/ K# i - })$ I1 P" o7 g- z0 u2 r1 i
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。
3 M. ^8 K2 H8 F4 l: Y% K) P! \
$ t4 Y- h0 Q; l% f1 \; F! L4 ]5 L) L* M; e- g) d4 \6 y; h% m$ S
|