+ j7 e2 F0 W5 e1 o5 A( S
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例( @) X K% a# T- S$ W
" m# J# i* Q/ ^9 `. U# A# C
- <div id = "computed_props"># z$ {) B K0 e% s: A# ]3 q2 w- F
- 千米 : <input type = "text" v-model = "kilometers">
3 I% x/ L* E6 t- T3 Q, {" Y - 米 : <input type = "text" v-model = "meters">3 f; V, o4 G: ^3 ?; g. ?4 E+ f1 o
- </div>
4 O) f# J8 k A - <p id="info"></p>
0 m8 ^6 a5 N4 g' e% N7 n8 V - <script type = "text/javascript">7 ]5 C' U8 y( E4 R$ f ]* W
- var vm = new Vue({; `# n6 `6 m) e6 a
- el: '#computed_props',
! A, J" \9 m. k3 H \9 `% c h - data: {
, P; x4 _/ a" l* \+ m2 G9 f - kilometers : 0,
7 e/ |% Y4 z, \ w0 o - meters:0. i C% e/ W* q; F
- },
+ o- p# ~ K, u - methods: {
$ C( S0 Y9 d% k! d2 x7 T* @, S - },$ J2 {' l) h% ~9 S8 U* K& b
- computed :{
5 w+ }' {7 S* N9 k8 c - },
0 N8 e0 y; K2 h1 o7 _ y - watch : {0 I3 @3 k1 }; C* f% O
- kilometers:function(val) {
; m0 D9 s; P6 q+ ^# U) Q8 n - this.kilometers = val;! t$ [- H% }/ H% [7 @9 \# \
- this.meters = val * 1000;4 J7 T/ S* t/ G3 L
- },
. x5 C! Z4 l- c - meters : function (val) {6 Z0 {% o* }% `6 }- h9 [" O$ _7 K
- this.kilometers = val/ 1000;& K+ O5 x/ ~7 H
- this.meters = val;
; `) J" a/ f) \ - }1 F) c. c4 B2 m! D8 v
- }7 G9 l! I/ s9 P P8 R) q$ b T
- });
m* E" |3 K3 r( y8 @1 U - // $watch 是一个实例方法& u. R4 A9 A9 @( @% D
- vm.$watch('kilometers', function (newValue, oldValue) {( N/ H# x2 b1 L% I# V6 V, y6 o/ O
- // 这个回调将在 vm.kilometers 改变后调用! `* B V& j7 a4 B6 }
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
% y8 _( `$ {9 q7 _ - }): `- s- q9 {+ b
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。
' p; b* p x8 M2 A; e: K' w
0 l6 C' Z" f; a" b4 {8 g
' Q5 \; F$ X, f; t/ V6 {
; G7 L. y' C( s3 e) E5 _ |