3 z8 [6 s& }7 {1 b
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例5 s8 v3 ?( k. T5 M" E+ E! `
+ e7 M2 O1 A5 p0 a1 {
- <div id = "computed_props">
- M1 \$ T7 h& c - 千米 : <input type = "text" v-model = "kilometers">2 a4 w0 k9 V- C b
- 米 : <input type = "text" v-model = "meters">4 e+ _9 L3 Z; N- z
- </div>& u" K. N( v* H O; Q
- <p id="info"></p>/ N! Y4 u* E; r
- <script type = "text/javascript">4 c6 H; e/ Z$ ?% a
- var vm = new Vue({2 \- y8 l5 W( |. Z" N8 [
- el: '#computed_props',. _/ B. f4 g8 {( S* o4 x
- data: {
7 y4 x# l+ N# S - kilometers : 0,$ B3 Q9 c- \3 i( q* I+ U
- meters:0( a+ \, k! R+ _, ^2 a$ P
- },
* m$ q4 v. d$ }3 c; C1 K1 z - methods: {
. g' N" Z; G5 m- M7 k! H - },# O( U' `9 v7 Q% v( N/ `& C$ s) `
- computed :{
( k7 N( R' g Q- Q - },+ B! i. c1 Q* k. ?. ?4 J& I
- watch : {
; x9 ~3 Z+ y+ |6 A t7 \% p7 W - kilometers:function(val) {, l; l: W) F4 v: X
- this.kilometers = val;. |& c$ _+ y# a5 k
- this.meters = val * 1000;
6 n! g$ N! j: b9 U - },
6 q: u' O: ^# U - meters : function (val) {
" M2 [, U' b5 b; e& E# O - this.kilometers = val/ 1000;
9 O9 z" P" R9 o( @( W% s - this.meters = val;
2 a- t P, ]8 {1 y! r. i% w: L - }
4 J+ W/ i" n: K - }: _% T0 q' _6 T( q: n- a0 d
- });: @! u$ n% F1 X% J* R4 }3 o
- // $watch 是一个实例方法
7 E% o" Y* ?/ F" v) B) N - vm.$watch('kilometers', function (newValue, oldValue) {- n$ J( e6 v, A/ f) k2 y: t% n
- // 这个回调将在 vm.kilometers 改变后调用
. I( f8 i: L8 T - document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;! q; v' L1 j' o/ r3 d
- })* w; D) k6 p( }3 G q
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。
, }. q% B: a* T0 v2 y9 {8 ^; t% B v/ K9 }4 n' Z7 M
# _: @7 B; d( p6 s" K- m9 g# `( ]# _& R0 J) A
|