$ v. {: {. c1 x8 \3 T3 i8 X
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例
- ^& H1 u, Q" e @% @
, c3 v% Q/ g: ] Y- <div id = "computed_props">7 _) ~5 `! v. d. m1 B5 [
- 千米 : <input type = "text" v-model = "kilometers">
" ]5 h' W! P( Y- t- l - 米 : <input type = "text" v-model = "meters">
_2 k" S. n( O$ Y% W1 Q - </div>4 K* R7 a# F* {( [) w$ O
- <p id="info"></p>
# Z" L. ]4 ], a& j$ ^7 M0 Z( f - <script type = "text/javascript">7 C" @$ i i6 s7 X
- var vm = new Vue({/ M2 }4 M$ n; Q. a5 { p
- el: '#computed_props',( I( n, Y5 z# e, L0 B
- data: {
7 G# k7 b3 |. G9 K- H: ~ - kilometers : 0,( d; k- M6 a) U: z( C) r3 V
- meters:0
) F" J1 A2 z) w# C$ w& ~8 V - },
# _9 t, w& z9 ^& D% ~ g - methods: {
/ p% H3 n. W9 P4 f7 I+ E8 r - },, T P2 [- N, c3 F% _! Q
- computed :{5 V4 W& l% h5 K
- },- J/ e) t' w5 k5 R1 G6 Z8 e6 Q
- watch : {
6 t6 z' t4 h* ] - kilometers:function(val) {
: L/ j+ g" r2 [% K$ s* K, m/ L - this.kilometers = val;( L. S' G1 h$ {2 E; p; N
- this.meters = val * 1000;
9 O. f9 f1 V& Y" Q/ \5 t - },- R& E$ ]* o( V
- meters : function (val) {
0 ^% i8 a% F m3 @, L; V$ \. t# e1 v - this.kilometers = val/ 1000;
& L3 D$ P) L, r/ Y0 l# y' ]9 J. J - this.meters = val;
7 R, K% Q7 ~. X' r* D - }
3 }* P/ ?. T' l( W o6 [ - }
3 ^" {+ H; r' s7 \0 A - });
2 Z- W3 p% V, D! X1 S - // $watch 是一个实例方法
) b. I6 U" Y5 H/ K- i, X - vm.$watch('kilometers', function (newValue, oldValue) {
, q+ R. p% z% I) }% \8 d" x! F - // 这个回调将在 vm.kilometers 改变后调用
" @6 k2 @: M( M4 i - document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;8 o$ d+ N8 l. A& Y
- })
* z* l% @+ {5 Q {) H! B" F - </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。
B) z8 ?, d4 A3 z( `0 k4 D5 n8 R8 R9 ^+ A% Q
7 f8 x9 M. `& y0 m2 l
0 x3 b/ _" x8 I( |% J, M" P ?1 E |