cncml手绘网
标题: Vue.js 监听属性 [打印本页]
作者: admin 时间: 2018-7-4 11:05
标题: Vue.js 监听属性
, k' M& h; \$ o( w本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化:
实例
& P* w# u* c. P! @
! X% ~" {) a9 S. Z- <div id = "computed_props">
B, J7 }4 p5 \) p8 Y8 ~3 O& z - 千米 : <input type = "text" v-model = "kilometers">
]$ p" q1 _4 _4 B* T8 G% \ - 米 : <input type = "text" v-model = "meters">- C. v3 W1 |- |' l4 l
- </div># w8 r+ J6 t% S
- <p id="info"></p>( J3 }7 r$ I* [; D) x* r
- <script type = "text/javascript">2 w5 ^- {6 d3 L6 Q
- var vm = new Vue({
' \/ D0 |+ Q4 P/ U3 @( o3 Y, s - el: '#computed_props',
* y5 I% b: i9 J: v" D - data: {3 e7 l S! T7 j9 a3 W9 n0 P+ b( \
- kilometers : 0,
4 a( ~+ ?% U- {$ c! m - meters:0
- y5 l. `% o" L$ g z( r8 `5 k - },
; b9 j7 @, t1 Z$ A4 [ - methods: {
- Q2 V" z- ^; H+ r - },$ m, N+ N4 z4 ]7 b% S, W. e; z
- computed :{& |* b7 {9 @8 G7 F
- },
: [9 }% k9 U) A1 R) u! k - watch : {9 q Q# u5 C( u+ E: \" q
- kilometers:function(val) {
2 v5 f) V; V5 R: Z4 q0 g' [+ O - this.kilometers = val;
& s+ O. S7 Q+ G, t& z9 q - this.meters = val * 1000;: W% f6 W5 e! i# ]
- },
8 I7 ]+ [( C' a/ @ - meters : function (val) {$ Z- r6 K+ T) }) O: a1 e
- this.kilometers = val/ 1000;% m+ b( T- [$ p
- this.meters = val;4 E: z% x4 _8 D/ \( Q3 C$ G
- }
! l0 o( r: ~ C' p+ Z - }8 a" f3 d. c6 J. K$ Y
- });) S/ M! Z1 u: N: N' r' `
- // $watch 是一个实例方法
$ I' h8 s8 E6 N( o& P# L - vm.$watch('kilometers', function (newValue, oldValue) {
7 l( l! s8 n! V+ L6 j - // 这个回调将在 vm.kilometers 改变后调用- O- e" K6 [5 Q2 O4 t0 ~( k
- document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
; _' A2 G: v) n) E& M9 P - })
" M9 n6 `8 R9 E5 n - </script>
复制代码以上代码中我们创建了两个输入框,data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。
当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值。
8 _; g( E. g9 z$ N- U, g6 r* N8 u C& {3 A9 s8 G
5 g1 j) `9 M }) a* P; y
0 o* M3 ]3 Z- \( K8 H9 C
欢迎光临 cncml手绘网 (http://cncml.com/) |
Powered by Discuz! X3.2 |