& {( }4 J9 R7 A# i; A- A s本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例
# s- \! h5 d% C' `/ S' D( D& k5 g
- <div id = "computed_props">. X) z+ f) @$ ]5 T7 {! l/ Q
- 千米 : <input type = "text" v-model = "kilometers"># N) Z4 A6 V" j; y" A$ h! ?" ?
- 米 : <input type = "text" v-model = "meters">
R( g" N7 | T2 s - </div>( n* Z) ]$ `$ m# Q: A) q
- <p id="info"></p>
+ K. f! e; v/ V5 L1 H$ v0 S - <script type = "text/javascript">
3 u8 J2 f! `' D7 Y/ E$ g9 { - var vm = new Vue({( M8 r9 M e# w
- el: '#computed_props',' \2 s$ Q2 ~7 v' ~1 |* H
- data: {) P/ C3 H2 t2 r" y$ W! i* z
- kilometers : 0,
& ~, X- q( O& G" \; P4 g, `8 | - meters:0, W4 B6 u2 g& g7 a1 v
- },
: V9 y4 g4 b" b3 H, P9 a/ b# {$ N3 [ - methods: {
: I/ ]6 ^" R! ?+ @: W' T - },% K: d; R9 l0 s* V- c
- computed :{
( M; q7 v/ \- Y9 ~3 [6 k6 b0 F - },
9 c2 T; b4 y7 R/ B - watch : {
4 c# s9 \9 {( w - kilometers:function(val) {4 I& \0 i2 ~% Q, m S
- this.kilometers = val;
" N: Y" M0 r+ |, v - this.meters = val * 1000;
( R, v0 n* x( i4 l - },
4 {, k/ s' {( l K4 B0 ]& L$ J! ? - meters : function (val) {
9 |% h8 J! A6 N8 O2 X - this.kilometers = val/ 1000;: m) R: H4 X7 ^# u" K$ q
- this.meters = val;5 N% j9 s0 o4 v1 K
- }, q: _0 G+ c1 S
- }' m" J( J6 G$ o; _% P0 A9 Q
- });) b) _% L: t3 `6 p$ c/ U4 [. e
- // $watch 是一个实例方法
/ B4 a3 p' u1 H# b. f - vm.$watch('kilometers', function (newValue, oldValue) {7 T. z+ ^& z" P: ^! K) Y
- // 这个回调将在 vm.kilometers 改变后调用 e8 r1 P7 j }- j Y
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;0 a, ^4 \* G; t' `' \6 `
- })4 _' i( F; O) i$ c6 z; X: X
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。
3 c4 Z2 [1 ~1 L9 t, N- P3 V% Q$ O3 S: C
% n7 I* [. h; H @- a, e# Q
. ?2 c: A4 M# R' w* f
|