( ^; W0 I% @ ]# `- j: f
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例7 U1 q* a( E, y# b2 J$ a
+ R. e7 f, X0 M" D$ t" n3 Q
- <div id = "computed_props">
, H5 O( L1 F2 P, b e% h# e - 千米 : <input type = "text" v-model = "kilometers">) S5 L7 I! n# K2 [
- 米 : <input type = "text" v-model = "meters">
; x; s) q* K( @1 T - </div>
0 Z9 E- v+ n% h5 G& H - <p id="info"></p>
( `+ L& {+ O/ I. G+ b - <script type = "text/javascript">' m# I+ |+ \ s6 B* b
- var vm = new Vue({. n4 i" [3 d. C! ?4 t8 [7 h
- el: '#computed_props',
: y& b: o/ N# k, `, @% }( o/ c0 o, V7 [1 O - data: {
" @( U& @) {, V2 P- f R9 C$ s5 _ - kilometers : 0,
) ?; u w9 |: U- m6 R - meters:0* h' R4 N3 J+ m$ C
- },
* D. p/ N# Q& g8 L7 x2 x - methods: {4 s, Y7 @5 B8 n, `: K2 t
- },2 c* g7 {: t3 i3 o1 L
- computed :{% h3 I$ a% a- {# g
- },
& q: C& A3 o9 a( G3 G - watch : {
$ i/ T% X& g5 a( Y# i7 M - kilometers:function(val) {( f0 e8 v! i2 ?/ c% n/ n8 F3 H
- this.kilometers = val;8 f! o! h6 v( L1 ?3 Z& i
- this.meters = val * 1000;
+ [2 X4 Y$ g. q8 X - },! w; F0 t" [1 \: @) [
- meters : function (val) {
3 J9 {1 K# a$ V' G+ i6 @- c7 t - this.kilometers = val/ 1000;- @0 P0 g/ B6 @! o
- this.meters = val;" P. n$ j+ W, ^; m! L" v. Z
- }
M# t, [" Z! Y$ N G - }
( X0 s |0 j, V" q - });: I. N5 O q9 m
- // $watch 是一个实例方法
3 a) N; D0 M7 j. M( U2 F, g2 F! D: d& p - vm.$watch('kilometers', function (newValue, oldValue) {* ]( W7 T" j: ^& V8 V
- // 这个回调将在 vm.kilometers 改变后调用0 a, g9 _) _9 T& W6 r) n! x3 q
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;0 C* G& U7 ]. y
- }) ^; m/ R6 @" z( K
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。 % d7 h6 C- I. q, b3 F) K
; p3 |! R. ?3 A+ n5 j# }: ^
$ B- s6 B4 d' O$ }1 ~; e
2 a- |: \& b7 c- ^$ z# M) v9 J W* t
|