3 h0 E _* t& F: ]. x& H" z, B
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例
& L1 ?5 r T' j* S4 ]7 Z4 c4 [- b3 F8 D/ y
- <div id = "computed_props">
* @. v+ r% R* L/ [ - 千米 : <input type = "text" v-model = "kilometers">
2 b" O! Q2 l, n/ C+ f# q0 d J - 米 : <input type = "text" v-model = "meters">! k% S7 t( ]0 ~/ q% Q8 E
- </div>
# x; k( ^- j% g q5 U$ h$ L - <p id="info"></p>' H g7 A `& h( {8 g
- <script type = "text/javascript">
& E5 X4 ~: X$ x: o2 a0 c* n - var vm = new Vue({
W( y/ J& y. R' l* N8 i - el: '#computed_props',9 ~( c: e2 N; D' W
- data: {
% A' [6 i( x( B: p7 r! m - kilometers : 0,
! C. ?$ h& p1 E6 n A" M - meters:0
# M4 u1 H+ K! m& A# @* Q, n3 m - },
0 B- @* L* J" m - methods: {
* \( _: s( d& w, o9 d1 A - },4 t$ d0 I2 X1 C$ c0 a# {5 p! H
- computed :{% E1 X9 ` w3 V& w; x
- },
) U2 C6 k+ p8 n, o E - watch : {
, x. G; v3 Y( v6 ^5 O! I - kilometers:function(val) {1 V* m1 [5 m% a2 X* S0 ]
- this.kilometers = val;+ A2 A* J- [* `% d2 G" _
- this.meters = val * 1000;
( F3 S4 [' }0 O' ?# s; J - },7 L1 ?8 n& m9 |) J' N
- meters : function (val) {( u3 K C# g, x2 u9 D
- this.kilometers = val/ 1000;
, `' u9 S4 t# y! A - this.meters = val;8 e" S$ P8 q. T4 m3 J% ~6 d
- }. B, f5 a' e3 ^, I8 `
- }
7 _' w+ F1 n5 D9 w* X7 @% \ - });
, j# n9 Z, v: i: H0 Z - // $watch 是一个实例方法/ J( x6 V) }2 _* x6 G
- vm.$watch('kilometers', function (newValue, oldValue) {7 _$ C, S7 S7 m9 Z" X" Q
- // 这个回调将在 vm.kilometers 改变后调用, P% f. C4 p: R: t$ R3 X
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue; l: A5 R2 ?, p0 ~' O' Q& s, v1 i
- })
; l% D. j2 B2 V( g; | - </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。
) o P8 L; K' _9 L) f& _) N' D9 I/ `
' t# y7 ]1 g# x' |9 T" X6 P
/ C( p3 Z/ p, p7 V& W |