5 s q. q! R1 n8 [2 `2 I本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例
- h- \# b0 u' @, G& l. A* ]7 I! g0 |" h4 r. ?1 z
- <div id = "computed_props">9 t$ ]5 s9 d+ a( S; ^' g
- 千米 : <input type = "text" v-model = "kilometers">; C& m. a4 p8 {$ V, H% s
- 米 : <input type = "text" v-model = "meters">
2 @" v0 V" ]* I# C - </div>
: o& e7 S" L' `6 n; z% S - <p id="info"></p>; j( O$ q! u, Q6 e
- <script type = "text/javascript">
7 G6 @# { l3 }( z% B8 i - var vm = new Vue({
2 H9 {( [# O, i+ s5 ^ - el: '#computed_props',6 u! E8 x4 } W$ B. H! F) F. L
- data: {0 V/ s: Y4 m; h7 G8 P% i8 {# c
- kilometers : 0,& y0 F4 c7 \- B, m5 }5 C: I
- meters:0
9 ^/ a' v" w8 o8 C! P L" ~* v# O - },
/ s( d* f; r5 z3 @" w - methods: {- V9 `! _9 m! w j
- },
J5 I; {7 {: K. ?$ S: ^ - computed :{
) U5 A3 w" e6 g! `0 Z. S# o8 F5 z - },
2 V& U. W% M, l1 `# D9 z - watch : {
' N- L: J) t5 `# J+ p! p - kilometers:function(val) {
: {; G$ s2 F5 A4 p - this.kilometers = val;( v" T; h2 W+ r- o& R' m. \
- this.meters = val * 1000;$ \! x1 y, {! W8 n- C# V$ F
- },+ V+ W/ ]& h: V- E* `
- meters : function (val) {. l: C6 J g4 i
- this.kilometers = val/ 1000;- S; H4 e! J5 |3 M- b! J, ]1 Q
- this.meters = val;: Y: G$ v% \" R* o" f
- }6 K: Z: V& S( {
- }; d9 \- b5 t2 D: N! Q! W: P" I& R3 f
- });
) Q# M) P0 c. F - // $watch 是一个实例方法( e& X* e. D6 l6 K+ M& @) s
- vm.$watch('kilometers', function (newValue, oldValue) {
) C0 ]0 J, m. ^ - // 这个回调将在 vm.kilometers 改变后调用) O3 X8 t$ u" m% k
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;2 f) F8 }% G, t2 r1 _/ Y3 r
- }); q1 E; @' R3 y) g. ]$ s2 P& ?
- </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。 当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。 5 |. Q& h/ _: |
% G7 Z1 ]# t/ ~& l' {& [ M6 J3 j$ C) D) f: t& O- |
* s U& u4 ] F! D. s9 @ |