; u7 l3 } W& N; ^3 U9 j; _
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例4 u- a+ U9 R# ]2 L0 o
/ M% ?; P0 F. U" U/ |
- <div id = "computed_props">
5 E+ ^; v1 ^: B5 a - 千米 : <input type = "text" v-model = "kilometers">! }- |9 O+ p8 _& J8 h
- 米 : <input type = "text" v-model = "meters">& G2 m+ ~$ ^0 ?- Y0 l8 s. U
- </div>& m! L% v( ]& H4 |
- <p id="info"></p>
8 Q8 u! A9 O( M9 \% v! o4 F( R - <script type = "text/javascript">
1 A; ~+ s. {& g- O8 A% } - var vm = new Vue({
$ Q3 A6 n4 P$ ~& H" t" |+ k4 ^ - el: '#computed_props',
* p( c+ K9 C, W6 X& f, ] - data: {
4 x0 p' K6 b# R* ^. {9 j - kilometers : 0,
; v- {" T8 g6 [" r7 `' O - meters:0( a+ J, s t' E- H. \, n) F
- },
9 z! `. g c" ^' W; x - methods: {
7 o& s% P/ O L: _& e - },
. J) `' O9 f3 J+ W0 C' n - computed :{
( v4 c9 c& B, v' O2 ^: c" ] - },; x- i. m4 K, j! p1 r' }2 E
- watch : {
" \5 }3 F$ Q/ V8 |, j - kilometers:function(val) {: H. } a/ N4 m
- this.kilometers = val;
$ o( \+ P/ ~5 _4 H6 u) u: E" t, | - this.meters = val * 1000;
/ z3 L" ~5 e* z, f& g! B. E - },9 }6 D5 a% B5 F' [
- meters : function (val) {$ P! P$ A6 z0 L
- this.kilometers = val/ 1000;( n) Z. a8 X' S) @
- this.meters = val;. r( y" _$ Q7 H, @+ ?9 u7 P% K
- }
+ t0 s0 W9 C( W b - }8 }; l3 M5 G& c) I/ O( W0 w
- });4 N' H8 @* @ [3 e& y6 |
- // $watch 是一个实例方法# j6 q* `# w3 k
- vm.$watch('kilometers', function (newValue, oldValue) {3 Z" V. @/ D3 |" K8 \" s
- // 这个回调将在 vm.kilometers 改变后调用
* N" ~! b9 E6 e4 I) D4 P8 ^3 j - document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;0 }9 O+ y) U0 K6 l
- })
0 q/ s! d$ a1 i# T: ], ?2 C" I6 w - </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。 ' H- J0 a# s3 T* v5 v+ [
4 V1 j2 x8 U6 M8 F7 U6 }) K& a- Z
3 E( [; h( Z9 b7 A: k4 u
- B& [* u' p8 I7 }# w
|