/ s! a+ T+ T+ l
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例
9 ?4 S" a$ P/ v1 N8 h
1 y X: C/ N6 t+ d- <div id = "computed_props"># R! q, ~. u6 h: X* U8 e1 R
- 千米 : <input type = "text" v-model = "kilometers">3 M/ {- W# y$ Y' r5 O n: p4 l# `
- 米 : <input type = "text" v-model = "meters">5 e5 O0 Y, t) y; r8 t2 W: A$ |
- </div>
& L/ h7 v2 U5 j- c6 ]9 q - <p id="info"></p>& v! R9 V1 g; d! A% u' M- o% E
- <script type = "text/javascript">+ z4 w& r2 _) {* Z
- var vm = new Vue({
9 l6 n, G# c! ^& G2 U - el: '#computed_props',
3 n. j" P# V( s! U I- b$ `2 A - data: {7 B( i* K6 `/ d |
- kilometers : 0, W# J/ b) P. y+ l2 [2 L9 [) k
- meters:0
- ]) ?4 }2 |5 i0 H( R9 ~' c8 c G% ] - },
3 {' a c# B6 \3 M: \+ @- u - methods: {% `% z. f2 H) k
- },
; i; E7 j- ]0 p6 O/ G0 @" F - computed :{
1 ?# i' u5 D" T; L4 G - },: }+ U# x' |+ [6 |" j& s& u
- watch : {
+ ~# e+ S# g" {7 C6 c - kilometers:function(val) {* m- B+ j: @) W( Z& j/ D& d
- this.kilometers = val;
* A* l/ w M: M4 z( M5 ? - this.meters = val * 1000;
) H) Y: _+ f+ D - },( ]# [ O6 G4 i8 ]
- meters : function (val) {; a" S$ x2 i. ^9 e- A+ m3 q
- this.kilometers = val/ 1000;
$ P; ?" V" X' A+ {& i& \ - this.meters = val;
, i4 Z; A/ v1 f/ i/ Q$ \& m - }
- ]9 [" M4 g ~, r& K5 N - } l6 Y" {3 o. r7 l' W- I
- });( a5 J; \$ I2 w$ h k
- // $watch 是一个实例方法
! D8 ^/ X% z7 j) G1 U8 |7 { - vm.$watch('kilometers', function (newValue, oldValue) {/ T! e6 a! Q! Q, g9 {, m
- // 这个回调将在 vm.kilometers 改变后调用
( q! R) V+ O. [3 ` - document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
4 Y+ h/ t) F9 n- G - }): E8 {. `6 ?' ^, v$ v }
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。
' N- n6 T% u4 T, j5 h' G1 `; f2 @& f: t4 s
. o' |' o3 \" t" G
0 O8 c/ z! r _6 `9 ?! r |