5 p- I' y. y7 m# b本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例! a8 \( B! Z7 z- v' W
) V! A0 ^+ ^+ U5 _$ u2 i
- <div id = "computed_props">/ I- g6 |; l3 g& \6 @0 e `
- 千米 : <input type = "text" v-model = "kilometers">' |$ E, j$ T2 ~$ E8 e# g9 M6 j
- 米 : <input type = "text" v-model = "meters">
+ h6 u$ ]: v9 k7 Q& ] Z4 ` - </div>
5 i) J9 z* o( \. A - <p id="info"></p>
" H; T, P# F7 P - <script type = "text/javascript">
- B4 M* Q: T0 g# u& U& V* N+ R - var vm = new Vue({: f) i$ O/ G& k, P
- el: '#computed_props',
# J. J3 @2 e8 ^. l! @ - data: {
3 ~) y& U S% T9 |4 G - kilometers : 0,
; e$ _4 L2 x3 k9 F, a- u - meters:0
' r+ _5 \$ c- Z( s - },# e$ G7 x" l$ ^0 P" v; F
- methods: {$ @0 H, D1 V$ {
- },% y( I+ u- r# [0 M& R3 z* R
- computed :{
- T+ p5 m0 o! I: p, V - },0 x9 {# v& y, Y
- watch : {
) v) V: E- {' [ - kilometers:function(val) {" N* F3 e/ U: k+ C
- this.kilometers = val;
" a5 r P. @- L9 w, X3 \; s - this.meters = val * 1000;4 }! q" a: X/ Z/ b; Y6 ?
- },
4 ^( _ Z e9 j - meters : function (val) {
7 e; d9 |8 r+ O" S - this.kilometers = val/ 1000;
7 a. N! H& E, ^+ u F9 v& g - this.meters = val;
$ Q& [0 h# K( d - }" w$ W+ l# X6 a5 l
- }' b, O# z7 n5 h
- });1 b: U" y" u( s1 o6 A
- // $watch 是一个实例方法
$ D2 ~8 X, W2 C/ X, G+ F. w - vm.$watch('kilometers', function (newValue, oldValue) {* L( a l4 H7 r5 q( k7 P! L, K- ?
- // 这个回调将在 vm.kilometers 改变后调用 M. D# f3 E; ? B7 j% ^
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
) z' G8 l) D; z/ [. C h+ [ - })5 g$ k n* V/ g( [3 ?/ l, `
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。 * K, t) }- V( E! i3 H, } N
/ d1 k) P) Z+ |+ A @* a( {3 m$ b
: {' A* h% H" N/ y n) q! ?
|