f( D/ B0 z8 {% X本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例' }$ w3 C4 T; T* B
+ Q3 N7 o8 H! h9 }3 S( V/ f; Z
- <div id = "computed_props">
' ~! O8 z# T. F0 K. R* g - 千米 : <input type = "text" v-model = "kilometers">) ~8 x; k" Q) _: k) l3 j' p' a- H6 z5 ^4 s
- 米 : <input type = "text" v-model = "meters">% \. F) P/ }% y# u1 E0 `( {8 n- u& A3 W
- </div>, R: K ^) w& z4 j4 Y# d; `. E
- <p id="info"></p>% l( F% _, T" O- q2 [
- <script type = "text/javascript">( H. Z0 e* C+ N k% |2 n) ~
- var vm = new Vue({" Z. O( X n; W5 ?7 t7 i
- el: '#computed_props'," [1 w# E4 m6 u
- data: {
& @/ ?- h* X0 n' t1 |% y* Y - kilometers : 0,
) L, }7 C( q A* R+ B4 A& T! U - meters:0
3 g1 ^. e2 Z0 { - },
! }3 I) @7 [* u. d& O - methods: {
* @# w& g' _2 R6 y( B3 [( D - },& a" v* u5 y" o- ]0 _5 x
- computed :{
* U" Q! q7 Q0 K5 \1 }/ Y - },+ V" \- ^: x; Q# p
- watch : {
+ b/ |) Y, A$ ^' n: c - kilometers:function(val) {5 X; H3 H' h- p' Q
- this.kilometers = val;
3 y0 D2 ~7 f U+ }6 }$ e3 v - this.meters = val * 1000;
+ p5 f3 W3 G9 _; O5 |9 { - },( H: l# y+ I8 f
- meters : function (val) {
5 Z8 Y; j( c+ O) o4 @; S - this.kilometers = val/ 1000;+ x) W ~3 e; j5 ^
- this.meters = val;
* x9 e$ {# I% K" ` - }# S1 p) H2 w) y5 w6 Q3 |
- }# P, A* D! v$ U U: c, n2 g% g: |
- }); N# L9 l @% a( Z+ U1 B
- // $watch 是一个实例方法: s& [, B! I: o5 ^* I8 Z
- vm.$watch('kilometers', function (newValue, oldValue) { {! V; I$ y- G# Y
- // 这个回调将在 vm.kilometers 改变后调用
2 E5 z- S; n5 `$ D& C6 B. @ - document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;0 V5 A9 R4 {% l8 ^+ g0 l U" e
- })1 x y" D2 e* L; c% w/ a
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。
( P# N- \/ I6 V7 k) W8 ^
/ o+ N5 u# I$ r3 }# I
/ t$ w( B+ z% M
4 [1 V t: L$ j$ c* b3 ]8 o |