zoukankan      html  css  js  c++  java
  • Vue(二)-- 计算属性,监视

    计算属性

    注意:里面的this都是代表vue实例(vm对象)

    • 在computed属性对象中定义计算属性的方法
    • 在页面中使用{{方法名}}来显示计算的结果
      计算属性中的方法的返回值将作为属性值显示
    <body>
    	<div id="demo">
    		<input type="text"  placeholder="First Name" v-model="firstName"/>
    		<input type="text"  placeholder="Last Name" v-model="lastName"/>
    		<input type="text"  placeholder="Full Name" v-model="fullName1"/>
    	</div>
    	<script type="text/javascript">
    		var app = new Vue({
    			el:'#demo',
    			data:{
    				firstName:'A',
    				lastName:'B',
    			},
    			computed:{
    				//什么时候执行:初始化显示/相关的data属性数据发生改变
    				fullName1 (){
    					console.log('fullName1()')
    					return this.firstName+' '+this.lastName
    				}
    			}
    		})
    	</script>
    </body>
    

    --1.1回调函数复习

    • 什么事回调函数:1.自己定义的 2.没有调用 3.在一定条件下自动执行
    • 回调函数:是么时候调用,用来作什么

    --1.2计算高级属性

    • 通过getter/setter实现对属性数据的显示和监视
      • getter:属性的get方法
      • setter: 属性的set方法
    • 计算属性存在缓存,多次读取只执行一次getter计算
    <body>
    	<div id="demo">
    		<input type="text"  placeholder="First Name" v-model="firstName"/>
    		<input type="text"  placeholder="Last Name" v-model="lastName"/>
    		<input type="text"  placeholder="Full Name" v-model="fullName3"/>
    	</div>
    	<script type="text/javascript">
    		var app = new Vue({
    			el:'#demo',
    			data:{
    				firstName:'A',
    				lastName:'B',
    				fullName2:'A B'
    			},
    			computed:{
    				fullName3:{
    					//计算并返回当前属性的值
    					get(){//计算属性中的一个方法,方法的返回值作为属性值
    						return this.firstName+' '+this.lastName
    					},
                                            //监视当前属性值得变化,当属性值发生改变时回调,更新相关的属性数据
    					set(value){//value就是fullname3的最新属性值
    						var names = value.split(' ')
    						this.firstName = names[0]
    						this.lastName = names[1]
    					}
    				}
    			}
    		})
    	</script>
    </body>
    

    2.监视

    =所有vm实例的方法都以$开头=

    • 监视的作用:监视data里面的属性,并可以控制属性的值
    <body>
    	<div id="demo">
    		<input type="text"  placeholder="First Name" v-model="firstName"/>
    		<input type="text"  placeholder="Last Name" v-model="lastName"/>
    		<input type="text"  placeholder="Full Name" v-model="fullName2"/>
    	</div>
    	<script type="text/javascript">
    		var app = new Vue({
    			el:'#demo',
    			data:{
    				firstName:'A',
    				lastName:'B',
    				fullName2:'A B'
    			},
    				
    			watch:{
    				firstName:function(value){
    					this.fullName2 = value +" "+this.lastName
    				}
    			}
    		})
    		app.$watch('lastName',function(value){
    			this.fullName2=this.firstName+' '+value
    		})
    	</script>
    </body>
    
  • 相关阅读:
    [换根dp] Codeforces Round 67 (Rated for Div. 2) E
    [思维]Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2) A B1 B2 C D
    [Comet OJ
    关于Winform中的消息框MessageBox
    C#截取字符串的几种方式
    C#中的时间格式大全
    winform中dev的TreeList基本使用方式
    拉取项目时error setting certificate verify locations解决方式
    如何在GridView中新增按钮列
    使用GitHub/码云/Git个性化设置
  • 原文地址:https://www.cnblogs.com/psyduck/p/14355960.html
Copyright © 2011-2022 走看看