0 g3 c: i3 g/ ]" ]$ S# T本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例" P( T4 U2 j" x: O, d& B2 C" G
* ?0 I$ H* m0 s4 [- <div id = "computed_props">, n2 [2 O7 E# U- @% a; J
- 千米 : <input type = "text" v-model = "kilometers">8 z/ o, B0 j5 B! Z
- 米 : <input type = "text" v-model = "meters">, l* a$ z$ e2 D' x3 G s$ v/ q
- </div>* Y$ N0 i2 ]! f4 c) A# i/ l
- <p id="info"></p>- l; ^+ i% e" g; j# f0 i
- <script type = "text/javascript">. e' j! q) c2 |7 x8 I' l |
- var vm = new Vue({
! O( I) G7 z9 t G) T% \ - el: '#computed_props',
0 i/ P5 q, e1 Y0 j! z f5 A - data: {; \9 j- b; f/ K! h7 |1 O, W# K& A
- kilometers : 0,
) Z! C* D' l7 D- p% m5 J - meters:0% P. i0 N$ q2 ~7 V9 U; ]
- },
, i1 l9 p$ W& A5 I+ x' I - methods: {
: a6 D h! ^$ {5 ]8 Q* c h$ X - },, u4 W& o, Q8 [3 ^9 [) s" R8 L, C: `
- computed :{, p. X0 n5 B! g+ l; x( a% @. f
- },
7 R$ h K1 j% `& R: g: q - watch : {* ~& P# P( C+ X& d* d
- kilometers:function(val) {' A: s6 ^. N' Z0 o9 k. Z
- this.kilometers = val;' l9 z6 k- f' T. N/ W9 R0 s
- this.meters = val * 1000;" Z. w. k0 {. t1 x, C& l% z) Q, @
- },
) x# @& e1 d! v0 W: X, W - meters : function (val) {
) x. u" H7 v. V& X - this.kilometers = val/ 1000;
0 u8 l' O* w* T5 L2 x - this.meters = val;
0 `- B6 V) N1 Z - }9 Q8 O$ A. I5 P
- }4 {+ J# }0 x2 X" a7 ~9 n$ b
- });# w8 e/ y, [: V4 I) [' A, o
- // $watch 是一个实例方法
" `9 U/ E$ @% V - vm.$watch('kilometers', function (newValue, oldValue) {
2 n6 U( I/ C. v- n3 I y$ `/ u - // 这个回调将在 vm.kilometers 改变后调用; Z- q, [. g' W
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;( Q; F3 z ^6 T' X6 U. Q: _, Q" L
- })
( E# q5 m9 [) Y, x3 S8 L - </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。 $ d& P0 K! R4 ^. K# j. O
3 U9 @' h% s6 Q
* p" B2 M( k- r
3 b3 M# D0 I2 E |