/ i% ?3 W: _) v# C, R& |本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例$ D: z; D" V. m5 B, ~
( H7 g$ N7 `0 u
- <div id = "computed_props">
- o8 c: A! ^( o - 千米 : <input type = "text" v-model = "kilometers">
6 A) ^1 G1 f; t% h \8 n - 米 : <input type = "text" v-model = "meters">
' U2 P0 M$ m1 ^# _, w# w - </div>
8 r8 |! T% T' z8 Q - <p id="info"></p>0 S$ C6 y9 a/ `1 _$ {
- <script type = "text/javascript">" q# e |, V: Y! G/ y
- var vm = new Vue({9 o: w2 V% k- y- t, O
- el: '#computed_props',
! f( c4 F$ n) I3 `. Y) K - data: {
+ ~1 e) a6 a: J N& B - kilometers : 0,8 Q6 _' J/ e( S* {9 a4 ?9 A' h4 S
- meters:0
" L7 X9 J- ~, M) A - },! g5 o+ ]6 {/ g# _
- methods: {
) N1 g& o" { D5 d! q4 d( A3 }5 R. @ - },
: J4 ]% K) L2 z @) T/ ~ - computed :{/ z" C7 W9 L: |, r: @! Y; u
- },
3 T" }. ^. o* s+ L - watch : {
) s! Z7 `7 b+ ? - kilometers:function(val) {* A a5 C+ G# Z( H$ d
- this.kilometers = val;
7 S9 z, y9 p) _ - this.meters = val * 1000;
, ~7 [/ D* J" t4 ?0 s7 x$ [. ? - },
: j; n2 D5 C" `% C9 t8 x. |/ E) K& Z - meters : function (val) {- N s: r; i4 }- @, d
- this.kilometers = val/ 1000;) h6 j1 t+ h* ]! v& p
- this.meters = val;
P5 m- L4 a( } - }1 l+ Z6 U& X' q( f( ?* s
- }
5 ]" v( i5 }; u - });
8 v0 ? y# x1 b) R - // $watch 是一个实例方法! \# h D: o, z# ?* o$ | R
- vm.$watch('kilometers', function (newValue, oldValue) {- J/ V1 }: R& D6 S
- // 这个回调将在 vm.kilometers 改变后调用! ^4 m9 ~1 ^" G, x& u4 O. h8 C
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;! b2 p- g# E0 r+ R# u
- })
, ^# s( T& k+ r. f. ~8 Z$ U - </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。
, E5 M5 \1 k- ~4 U3 ^, z
' s+ a: c( g8 Y* G4 D8 m! t, a& ]% K! Z3 b
1 K9 t, H5 n2 V9 Q. T( O
|