% }* S# e4 l) R, ] w# n
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例
; {* Z6 }$ V3 Z$ G, K6 z$ E- e; v O' }; g
- <div id = "computed_props">' f* ^* ]# L' g& Q2 Y! {; |
- 千米 : <input type = "text" v-model = "kilometers">
: \& S) X5 C0 a0 ^! ` - 米 : <input type = "text" v-model = "meters">
% w7 X$ E3 Q8 s7 y% W - </div>
: Q& h' s e; J8 {- M - <p id="info"></p>$ g% O- A5 h; ^, f! ~
- <script type = "text/javascript">
9 o; o3 o% R8 |1 v: u- f( p - var vm = new Vue({4 Q$ S6 K0 o# b; F0 ~( e3 j, M* I
- el: '#computed_props',8 V# o2 u! V# o
- data: {
$ T) M/ B: ~& B/ V - kilometers : 0,# `; S4 A) |9 j* f# l0 \8 |
- meters:0
7 h7 f! n5 y1 Q/ z - },' s( E0 M' r. D( f9 P1 g
- methods: {
9 q+ A6 ^0 i& |4 k - },& }# N, D( Z w) @
- computed :{
% o! {3 M. W" l" _5 Y) x - },
# V/ R6 p0 g+ | - watch : {6 m! T+ T4 W, H, Q) W. m
- kilometers:function(val) {
6 V F G% N4 c, j% m - this.kilometers = val;
# G% a' K+ s; i' K2 W, i3 W - this.meters = val * 1000;3 ^# r J4 }* \/ i! W8 z! _0 W
- },
- \9 p, o2 t/ F+ z - meters : function (val) {, x9 _) W" w/ V$ c* Y% m$ |
- this.kilometers = val/ 1000;
% O& p$ [( S3 M: u( ` - this.meters = val;
6 Q" Z- ]* u. o }( ~4 O3 b - }
% a3 X0 y, N5 w. E5 g - }
. Z5 ]4 |% |7 i5 _ - });
3 J, H+ `; T; U1 C - // $watch 是一个实例方法
7 ?: j m9 M2 m - vm.$watch('kilometers', function (newValue, oldValue) {
* R1 E2 p: R$ d* T, p/ B - // 这个回调将在 vm.kilometers 改变后调用- f$ }# f0 n, ^7 p- ?
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;, U3 `$ s. W+ g7 f
- })! \! k2 b! l8 S/ Q" P6 e$ S/ X
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。 5 E1 R4 Z* R% R& t
& e$ S) y5 Z/ j2 [) L, ]0 e" u0 H9 i! ?1 f
# h2 ]) E. W5 q+ v |