$ f" G1 g7 N$ {' k
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例
4 M4 k. c1 O/ o0 @# u0 k0 R6 s* t2 K! P$ D' }/ \( X+ _* s! h% E
- <div id = "computed_props">, w7 d7 ]& }# V g
- 千米 : <input type = "text" v-model = "kilometers">
) q. g2 \, z6 F9 v - 米 : <input type = "text" v-model = "meters">
0 |& c# M0 h R0 O& b0 f' A - </div>
7 V+ H, n) C) N - <p id="info"></p>
! E( p+ Q* {3 y' E, f - <script type = "text/javascript">
3 n) v; F1 ~8 u+ ]( |/ g- Q - var vm = new Vue({
1 V+ e% W' M3 R) q5 P - el: '#computed_props',( w# y. Y5 U* k0 l: @
- data: {
$ P3 _4 }; C2 ~ - kilometers : 0,& N" ^8 @& x' j) I5 g+ a
- meters:0
+ ?$ G# S6 Y9 ~* B0 P$ l - },
! Q; N' H2 e- ]* Q' P2 M5 {% g - methods: { a: X1 u# ~; K7 \
- },& L, S" ?. G2 N+ N5 P. n
- computed :{
. c6 m# E# }; }) M# T - },/ L. {. a+ M# u+ e. w2 }
- watch : {& H6 I& ^ i* l) {
- kilometers:function(val) {5 i% g8 ?* z% K$ X
- this.kilometers = val;! D; L/ R$ S8 [* { A
- this.meters = val * 1000;. W" [8 |9 P# b6 B2 r: c7 R$ _
- },2 c3 e8 l F$ [+ c# r
- meters : function (val) {3 r x- Y6 ?0 l5 f# v* p8 K. K0 O
- this.kilometers = val/ 1000;
& ` q! k5 s0 P - this.meters = val;
, G3 i2 n$ `5 d8 d. O - }/ E w/ c6 h, ~0 R" j
- }5 z7 ?- y2 B2 E# R5 P* J. |5 m9 e
- });
. v1 s. s8 a g- u4 A! P6 k - // $watch 是一个实例方法
( x% p$ p( P! V3 v% N# [& { - vm.$watch('kilometers', function (newValue, oldValue) {
& z* x a6 z8 s0 `" h7 K0 A4 g - // 这个回调将在 vm.kilometers 改变后调用 a0 A' b( \5 L: S( _) I( F
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;+ h6 p5 }. d1 h- p' X; ?
- })# R& Z& _1 I2 D& S
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。 , W) r+ P' t& ]" f9 U! T7 ?. h8 h
8 S+ t f2 T6 C/ f; e2 Y: u/ [. C+ A# @! b% S* t! Q/ g
5 M- U% j+ d8 ~( L+ M |