/ j1 \6 |% X% L$ e5 u
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例$ s" b& L7 X k6 v, w# w/ `
% g0 d* |% Y9 A" B% E; f0 I
- <div id = "computed_props">; t* e( M9 N- r7 P1 C
- 千米 : <input type = "text" v-model = "kilometers">
# g `( j, t& F) W4 [ - 米 : <input type = "text" v-model = "meters">
$ [5 K( r }" { - </div>
5 Q; ]5 ]8 X! H& I& K& G% n% a - <p id="info"></p>
8 H3 W( a. G1 n0 C - <script type = "text/javascript">
' I% P3 @) N) ? - var vm = new Vue({
0 P. W/ z" `" a$ o7 h( j6 S - el: '#computed_props',
. i/ U6 [+ e7 f) o5 S# g7 z - data: {
/ s- [6 f$ V2 l9 z: i, d& t. U - kilometers : 0,
% G% B6 m6 C: @ - meters:0
. F% A9 K$ S- N9 v - },) W; r# z0 _" \) d
- methods: {
, o, F3 o ~! h2 G( q' v - },
/ S% A) y P4 K7 g - computed :{
. Z' x) C+ h3 I5 R# Z - },0 f. Y3 F- _, P1 H* l6 Y) R
- watch : {5 v; d9 u2 G: k5 W; r, w* l
- kilometers:function(val) {
. J+ ~) a( E" w* Z - this.kilometers = val;
; B, `4 n% T9 m& m - this.meters = val * 1000;8 t/ S: B, _6 m
- },# I6 v- C' V- {
- meters : function (val) { G: z3 ^1 C0 N) a l
- this.kilometers = val/ 1000;6 ~" z" ?2 O8 P$ G; G: O- v
- this.meters = val;
7 P& h' U4 V( C! j l - }
3 ^! V5 c/ ^# t% c' z - }2 a- U4 k g% U: `9 Y! E6 u
- });+ F9 f, ?$ g+ G8 S' @
- // $watch 是一个实例方法* J' u2 @" ~9 m
- vm.$watch('kilometers', function (newValue, oldValue) {
5 j' O: W9 z1 }, P$ G% m/ z - // 这个回调将在 vm.kilometers 改变后调用' H- }' l% T% D5 F3 D
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
9 _0 Y7 n7 {+ e1 Y - })
. W5 J/ M4 H- n1 V; b* s - </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。 % g' n/ q' e5 J# O, w2 P
; n6 N3 |; L/ v# [3 K
' g4 \, Q( s0 L0 e" {3 E: q
9 d2 Q V3 M& Y4 b+ m& | |