) \$ H6 \, V" b0 r0 @本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例
! }; u0 V) e* n. U8 Q1 E! }7 P/ @8 F. ?) D# K2 z7 J) q! _9 G
- <div id = "computed_props">3 ^ ?; [( E) u1 E
- 千米 : <input type = "text" v-model = "kilometers">1 `) F0 E9 B1 L+ X/ @7 d9 Q5 }0 i
- 米 : <input type = "text" v-model = "meters">. m: p5 Y1 P) L2 S3 J7 {
- </div>
8 }& M- f4 K+ u* U; G$ H1 R - <p id="info"></p>
! ?* c: ^ Q: {3 a - <script type = "text/javascript">, e& L6 X% D6 K8 E: ?* n* {+ @9 {
- var vm = new Vue({
7 `: E: L6 g- L2 C. O - el: '#computed_props',: }6 E; h0 F8 n: Z# ^
- data: {- e2 W, y7 D# I }
- kilometers : 0,
& e5 X" m" B, M - meters:0
5 X4 G, C9 ^! ?. L* k2 C4 a2 V - },
/ H! A% ^; [ G - methods: {6 ?9 f, M$ h2 D0 E! g& }
- },: q" j7 X* x6 _ d( z
- computed :{
) z( p: O4 \7 A - },3 M, Y4 S* ~& B+ b
- watch : {
5 z- p3 W ` w" l - kilometers:function(val) {7 u& i' j4 y$ X* T9 I9 v7 ^
- this.kilometers = val;1 y% v9 l5 ?% {4 _. _& }5 C
- this.meters = val * 1000;# [) Q b. X8 U1 `7 G* E
- },. A- z8 z0 X F% N8 b. M
- meters : function (val) {
; x* b* c" V* I# X% F - this.kilometers = val/ 1000;
( ], _& S' x' L( C' d - this.meters = val;- x3 l6 F% z+ O) P- H
- }
/ k% L& \% ]! S; Y- _! r# Z - }0 o. R& K1 F% p2 L. D8 R G: ` s+ J) Q
- });
6 z- j; N: K9 Q% Y8 c# u7 F - // $watch 是一个实例方法4 o# W2 o/ a/ l% L
- vm.$watch('kilometers', function (newValue, oldValue) {, ?3 W: [8 T6 _8 r
- // 这个回调将在 vm.kilometers 改变后调用1 Q; a& {* t' b
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;$ ^1 l; d- b" f P) a: x
- })0 d7 s' t' S4 ?
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。 8 g) E. t8 ^ h% W( R$ |
) e$ ]- A0 H* E
& i3 x4 ]& i5 K% K+ ~! A
/ Y* a3 N. s, A$ Y9 p |