; g+ Z! m# d7 ^" m5 ~& {本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例
5 L0 N/ |/ K* a3 S; S% W2 a/ K6 |. U6 _7 u9 i; _. _
- <div id = "computed_props">
4 Y' G! b2 v6 A1 h' X) d$ } - 千米 : <input type = "text" v-model = "kilometers">$ y# C+ s+ w) W: X; {. N
- 米 : <input type = "text" v-model = "meters">7 F m+ j* D! [2 j. o
- </div>
5 ?# }' Z# O; r% T. y! c* n - <p id="info"></p>9 _7 L( p) y% |7 L1 y7 d( R
- <script type = "text/javascript">6 t+ Q- L4 s+ P V/ G7 D8 a/ l
- var vm = new Vue({! Q& L% E( w$ O4 D) W4 T" e- g$ D) {
- el: '#computed_props',
3 h5 C' @1 d' a7 b0 C, \# K1 G - data: { D2 Y6 M, ~, K; C v
- kilometers : 0,
4 j2 K. Q' O3 D1 x - meters:0( ~7 a3 l7 c4 N6 ^1 n3 t0 `
- },
2 d: M7 `! `2 J! a. K - methods: {, }" I/ v8 `! G8 R! @
- },% [5 z+ ]) b7 l- D; L( n
- computed :{
7 U. d* Q- |9 N+ p7 c - },
U" U, p. { ^! u# m/ f g. s - watch : {4 G0 ]) J' U2 n9 U( ?
- kilometers:function(val) {
2 O$ V' @8 l$ Q R( w( [ - this.kilometers = val;/ w. l8 V a8 Z$ F
- this.meters = val * 1000;
$ I& D) f7 M5 `2 K - },: ^6 x" n' x" }7 ?' g
- meters : function (val) {% m; H9 M/ k5 E. D; c2 T
- this.kilometers = val/ 1000;
: k: B6 I8 b% e8 C - this.meters = val;8 Z- v0 _ o o- M, ~! A* S" M
- }
. u8 l# p; r5 R. n$ H - }
( y, R/ N7 t4 N% J( h1 e - });
. z: l, P. L6 E; q( E, j: o4 d1 D - // $watch 是一个实例方法
; c) r, E7 j: Q' S, Q$ j4 r - vm.$watch('kilometers', function (newValue, oldValue) {
: _0 l. ]6 \8 ] C! {, v - // 这个回调将在 vm.kilometers 改变后调用
% p# {3 Q1 E0 l, ~! C4 V. N - document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;9 F2 ?: H: ]. ?
- })6 E; _9 h3 A8 g+ z$ N6 _
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。 # k1 Y" C3 P! G
6 b1 Z' a& ?& P5 t+ Y* B5 W( v" b) g
1 G' ?) w8 j' h+ f }
5 G' e+ r; X3 t; H. U
|