% N8 F7 X2 Z. Y$ t4 e
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例! h. u r4 z( y
% d: I$ L: D; z& |' T. u- <div id = "computed_props">. Z: y4 E" ]* V3 s/ Z
- 千米 : <input type = "text" v-model = "kilometers">( I7 o6 \$ [, b( j& i
- 米 : <input type = "text" v-model = "meters">
, M9 c: X) n# |6 c5 }5 y4 G - </div>
) r& [& H/ x* |, F - <p id="info"></p>
- r7 e: y. O* ?4 ` - <script type = "text/javascript">( t. R! @7 b! |0 M6 ?5 X# ?) X
- var vm = new Vue({
/ r" R; D2 V2 O( H+ g - el: '#computed_props',3 S+ P7 m- P: `) m4 i( h1 a
- data: {
F+ Z1 ^: @+ W1 q- W - kilometers : 0,4 S* T4 h' J4 M! `/ P4 Q) p
- meters:0+ L# e. A! ^* a. D7 S/ R& f3 W& U
- },% K4 G; k( k2 Q
- methods: {
q: X& ?: Y; t- V% g& t9 K0 X - },
5 H% J6 X8 W4 A( Y. l - computed :{4 _: I+ }7 Z& H# H" l6 s
- }," Z6 U$ ^$ K ~1 m4 Y# K2 G# m
- watch : {
. e! i3 R0 S' W1 R$ }/ `. Y - kilometers:function(val) {1 B5 H Q& v2 `3 T
- this.kilometers = val;' S" ~! j' l8 x u
- this.meters = val * 1000;9 t( m/ w) V8 h0 H
- },: R$ X# O. ?' o y$ O3 ~
- meters : function (val) {
7 a' f# b- q: e0 K8 @4 @2 R! { - this.kilometers = val/ 1000;/ Z& M& _' p0 {% d
- this.meters = val;& Q8 g' q/ e* I! r
- }
6 y6 ?9 `+ k$ O - }
+ Q8 j* l7 M. P& `4 c - });
0 B* E. h' r; o2 B% | f) T - // $watch 是一个实例方法
/ h8 Y9 U0 N8 n8 P8 S# T8 r - vm.$watch('kilometers', function (newValue, oldValue) {
* G; K0 p: n5 }6 G& m - // 这个回调将在 vm.kilometers 改变后调用
" _! V+ r# D2 {& \2 s - document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
! t2 Z$ O2 c( `% v& x1 ^: {1 d5 Q - })% E* g( j, j" Z" `
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。
" i& r% ?1 V" n4 I k& [' ]: ~" K% L; H
1 B, s, {# F- A
T. h$ i- {; Y5 a% J8 B1 u |