6 ?$ S0 z# Q+ Q5 D$ }; y本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例/ `. Q( k( H3 F; f, M
/ n2 n4 g- ? G! k
- <div id = "computed_props">
3 R2 L' c, o5 D D5 `& ^# O1 C a - 千米 : <input type = "text" v-model = "kilometers">
D0 M& H7 g8 P - 米 : <input type = "text" v-model = "meters">
9 d( z4 \! Z' F$ Q1 V, ? - </div>! Q; ~, X- \7 Z) |! M
- <p id="info"></p>
8 Q( U) a! L! B5 A& C4 P - <script type = "text/javascript"># N% N8 O ^& S, z2 ^' v- z
- var vm = new Vue({3 Z' \" B, i( i( B1 [8 g+ X2 C
- el: '#computed_props',0 m c8 M' D- Q% M/ ~0 U% L: D
- data: {
3 I3 m, q8 S/ R1 `8 g' r1 H8 s9 ~3 ^ - kilometers : 0,: `+ \5 D# @% P; p! f
- meters:0
. C# A& g: K5 D1 E0 i - },
- ^2 J" S. r6 C: ` - methods: {8 m, i) \- F- Q
- },
+ B, v0 e8 ~; f7 \7 U: }, \ - computed :{% j6 m: t4 j/ S* C1 r
- },
/ d; m" x( s% t6 X4 T, ~ E - watch : {. n6 {* ?; H2 P( F5 C4 ]
- kilometers:function(val) {
, T) f+ K" [7 E9 }; M. \0 B8 O - this.kilometers = val;
$ L5 i. A. d+ E - this.meters = val * 1000;
( ~& G" V' A5 a, `4 I$ ?5 j/ E - },: f# f7 \; A, O2 `
- meters : function (val) {
# x3 R+ ?9 S5 o% i - this.kilometers = val/ 1000;
3 k) F; A2 r. k! V& f - this.meters = val;
. b1 G4 |! Z. H4 b - }5 ~1 Q% A& N' Q" l
- }3 W5 h1 P% W8 V- t/ s
- });8 e2 Q( o9 b$ Y& t
- // $watch 是一个实例方法
1 V% T+ z/ B2 [ r - vm.$watch('kilometers', function (newValue, oldValue) {2 ^7 O) p6 d% W K! Z
- // 这个回调将在 vm.kilometers 改变后调用% l5 m, O! N( ^
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
) ^' T* p9 ~! s7 e! `) B* R# C9 D - })* a2 q* [$ b0 R. D
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。
/ ?. @8 z8 p" Z$ P+ T+ l) J' l2 x% a! t& [
5 s9 b, V3 M( t b* O: s8 N
9 V9 L& H t: m6 w+ [ |