9 h( Y7 \: F; k; r本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例
# O, T% p/ W& u/ X" J, N0 [5 z( }. M( n P! c
- <div id = "computed_props">1 l1 E4 J0 x8 D" e$ d1 R
- 千米 : <input type = "text" v-model = "kilometers">
$ v( J/ Z" J% @) Q& r! A - 米 : <input type = "text" v-model = "meters">
+ ?; \# R8 r# e4 [ - </div>
( j2 n9 N' s; L/ ?4 b. {9 c- S* L - <p id="info"></p>
7 `4 n; j) L9 ~! \9 { - <script type = "text/javascript">7 h) j! k! _4 I4 f
- var vm = new Vue({, x& R$ v0 Q* _0 k B# t
- el: '#computed_props',* {% ?! Z- `7 L3 I) Y3 y6 k
- data: {! I$ V$ {( @+ _, t3 T% w( r! t
- kilometers : 0,( o- A" u# y5 p/ _, ?
- meters:0
& _" _, u y* S1 ^6 W9 r - },
4 H8 p, H' D) k - methods: {; B: z& {. [% y
- },) f5 K4 l- |* P! D
- computed :{
3 f3 e% R7 \ I5 {0 n - },
+ S6 O$ @# B/ I- K - watch : {# l. ?5 P; h% E. [9 o& S
- kilometers:function(val) {
" I" d; M; N; E& B( | - this.kilometers = val;: H/ G! b1 D3 _
- this.meters = val * 1000;
5 p2 F$ K; x2 b$ y - },
( |+ i% F P$ @3 A' e, B, e G - meters : function (val) {' V: _3 X) i0 y7 T2 k
- this.kilometers = val/ 1000;
: c5 h1 D# ~ m" ~: ~ - this.meters = val;! Z6 g/ z1 Q+ f U! i! q O& v
- }
$ D; g1 @7 @2 U5 }# J7 V - }
9 r: B1 a' v1 X& f - });
5 ]) u* Z& o, M+ E4 ^0 Z) C s - // $watch 是一个实例方法+ G- L! M! t: r* _, L' U9 h9 M
- vm.$watch('kilometers', function (newValue, oldValue) {* A% x( e9 y) }" Z: m
- // 这个回调将在 vm.kilometers 改变后调用
! ?1 j" J- Y {$ A! |1 c% [ - document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;. ]) c5 i) ]0 g4 x$ E
- })
2 `* S% P7 M, j8 v! P - </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。
7 k/ T. [1 a; J5 d- }5 P! [8 ]' ~+ l4 @3 I& O1 t5 h3 R
' |. @, D( J3 Q
/ {0 A4 M5 g% j" M |