) ]! i- B" w: E0 V3 F
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例
& _' j0 `; Z/ L5 P( ^; Y2 t5 w8 P( U
- <div id = "computed_props">: D4 a9 K( q) G9 Y& |( p2 x
- 千米 : <input type = "text" v-model = "kilometers">; S" V" Z! E, [1 n1 T6 I0 H9 ?+ X
- 米 : <input type = "text" v-model = "meters">
! y( H1 |8 K$ _3 X5 z2 V - </div>2 P8 R! @7 o3 e! K3 Y
- <p id="info"></p>
0 _% _/ J( O# P* }) \ - <script type = "text/javascript"># W" \9 `" |9 E* j, r' }7 G% Z
- var vm = new Vue({
( P- h! B3 w9 ]% J# @8 h% _ - el: '#computed_props',
$ B. a1 O& q$ v0 D, N S! k - data: {# z; F/ \6 S' F; m+ q3 K* L0 A/ K9 c5 C
- kilometers : 0,. e; l2 [6 S' K% E
- meters:0
6 _8 _; I6 u' K, U5 M; K - },/ f' K2 D/ e9 n2 x! R9 I
- methods: {
) }: ]. o" [) {" I) {3 A' K - },
9 F" x! J) L) q& W, G3 f* p - computed :{
+ U9 c% ]" r: v% a, y0 u2 Z - },
4 X7 F7 c1 g R4 L# I% H - watch : {
% H; I7 F b! _7 l; l* B - kilometers:function(val) {: k/ g% s. e+ X
- this.kilometers = val;; f; Q& _! d" x- U+ k- W2 x
- this.meters = val * 1000;4 }+ f# \" j* D
- },& \' Q' [9 P1 `
- meters : function (val) {
3 Z* H! b6 \: q) f - this.kilometers = val/ 1000;7 p3 C) G( V F9 z
- this.meters = val;. G$ }2 p/ o$ J. Q
- }# j D6 c7 V) @
- }' q" Y( h& C# B" ]3 Y8 r
- });
- x' c; G! s2 Q7 H. Y& P2 T* w3 [ - // $watch 是一个实例方法& t2 h! S* u/ ~( h% X
- vm.$watch('kilometers', function (newValue, oldValue) {
+ N6 F, Q; y! i, k - // 这个回调将在 vm.kilometers 改变后调用% U# e9 N, y$ z, [
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;+ i- i8 I1 j. H( a
- }); E" B% i; h" V8 V- b5 U" g* Y
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。 * P2 j1 s2 D0 Z- F) G( c
! o) m0 q0 P9 j
4 T% J& D& I" c/ s
1 h3 t) {* D0 {$ o
|