% b/ u( g$ h+ T V b1 a7 v0 q本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例7 O/ O" R @$ K- P1 @- w+ a' r
, F( E9 _$ _5 k) Y. {
- <div id = "computed_props">
: Y; S% m4 ~: ~ ^! u, q/ N% `1 D - 千米 : <input type = "text" v-model = "kilometers">) H% `" Y" Y" a5 G. f( p
- 米 : <input type = "text" v-model = "meters">; [" D9 R1 S* ]9 ?) m7 I0 i! Q
- </div>
: J7 R: r( m- K1 b9 y! P - <p id="info"></p>
& |* t9 G. Y8 N) I* }$ B - <script type = "text/javascript">
/ Q1 C3 X3 I* s& G+ h! S7 J - var vm = new Vue({: @& H. g( O2 {% x& {
- el: '#computed_props',
: |( C, t: L/ h% _ - data: {
. P* V( r4 ?" {+ T. Y$ C& X) N - kilometers : 0,1 z; v+ ?$ Y1 t2 G4 m. ~. G
- meters:05 u* M: R+ f( u8 H; z7 T
- },
2 _/ Q5 l" M- \8 g8 s! s - methods: {2 a, \. N* _8 N7 ]! I' P& x
- },4 r, }8 `- d1 x& K( g; I
- computed :{: S9 v1 ^7 t( u( l
- },/ E! K# y4 z1 q. p; F! g
- watch : {
0 N% x) u3 Y1 p- o+ N; Y' H0 j h4 \ - kilometers:function(val) {
9 @. \1 j& J" b6 @ - this.kilometers = val;# [; M9 s( g9 w7 G* o; n' w* B) c% Z
- this.meters = val * 1000;5 Z, G7 n& I- ~- r+ I3 \- v
- },) ~5 }& C" o, g, q1 o8 [1 [) A
- meters : function (val) {( x$ m1 R) G v8 ?8 s9 b
- this.kilometers = val/ 1000;
8 a0 [$ E9 q9 t" v% | - this.meters = val;4 o3 _* K0 d& E% q" ]* o
- }
( I7 n' z7 h( S4 o" \ - }5 G/ {! w, ]# |: @" x/ o5 _0 d
- });( C9 L! U3 }! o
- // $watch 是一个实例方法
8 a+ \& M- y9 `5 H - vm.$watch('kilometers', function (newValue, oldValue) {
, R5 C3 `- _7 ^ - // 这个回调将在 vm.kilometers 改变后调用+ F: n1 \0 [+ h/ M+ Z3 e( E, Z& m
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;4 @3 p0 V) E2 ^9 e5 m) F
- })
2 b. P1 C6 y- u( L# ]% P! o; S/ O - </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。
) k6 l9 z9 A+ Y- P) a- {
- ?; _/ F* s1 b; y6 ^9 g5 p' S
/ n: S% B, {7 t& \ |