Vue基础进阶 之 实例方法
常用的实例方法:
数据:
vm.$set:设置属性值;
vm.$delete:删除属性值;
vm.$watch:观测数据变化;
生命周期:
vm.$mount:手动挂载Vue实例;
vm.$destroy:销毁Vue实例,清理数据绑定,移除事件监听;
vm.$nextTick:将方法中的回调函数,延迟到DOM更新后;
vm.$set:设置属性值与vm.$delete:删除属性值;
示例:

想和上图一样可以添加一个id,如果有id就就行自增,如果没有就添加一个默认值,因此只能使用.$set的实例方法:

vue代码:
<script>
let vm= new Vue({
el:'div',
data:{
user:{
username:'perfect'
}
},
methods:{
changeUsername(){
this.user.username='perfect_1';
},
addId(){
// this.$set(this.user,'id',1);//局部进行添加Id
// Vue.set(this.user,'id',1);//全局设置
if(this.user.id){
this.user.id++;
}else{
Vue.set(this.user,'id',);
}
console.log(this.user.id);
}
}
});
</script>
其中,this.user表示对象,id表示key,1表示value
html:
<body>
<div>
Id:<span>{{user.id}}</span><br /> 用户名:<span>{{user.username}}</span><br />
<button @click="changeUsername">changeUsername</button>
<button @click="addId">添加ID</button> </div>
</body>
同理,我们使用.$delete实例方法:如果有id的时候我们进行删除

使用.$delete实例方法的vue代码:
delId(){
if(this.user.id){
// this.$delete(this.user,'id');
Vue.delete(this.user,'id');//全局的
console.log('已经删除ID');
}
HTML:
<div>
Id:<span>{{user.id}}</span><br /> 用户名:<span>{{user.username}}</span><br />
<button @click="changeUsername">changeUsername</button>
<button @click="addId">添加ID</button>
<button @click="delId">删除ID</button> </div>
.$set与.$delete实例方法总的代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> 06_常用的实例方法</title>
<script type="text/javascript" src="../js/vue.js" ></script> </head>
<body>
<div>
Id:<span>{{user.id}}</span><br /> 用户名:<span>{{user.username}}</span><br />
<button @click="changeUsername">changeUsername</button>
<button @click="addId">添加ID</button>
<button @click="delId">删除ID</button> </div>
</body> <script> let vm= new Vue({
el:'div',
data:{
user:{
username:'perfect'
} },
methods:{ changeUsername(){ this.user.username='perfect_1';
}, addId(){
// this.$set(this.user,'id',1);//局部进行添加Id
// Vue.set(this.user,'id',1);//全局设置 if(this.user.id){
this.user.id++;
}else{
Vue.set(this.user,'id',);
}
console.log(this.user.id);
},
delId(){
if(this.user.id){
// this.$delete(this.user,'id'); Vue.delete(this.user,'id');//全局的
console.log('已经删除ID');
} } } }); </script>
</html>
.$set与.$delete实例方法
vm.$watch:观测数据变化

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> 07_常用的实例方法_watch</title>
<script type="text/javascript" src="../js/vue.js" ></script> </head>
<body>
<div>
<input type="text" v-model="msg" /><br />
msg:<span> {{msg}}</span><br />
<input type="text" v-model="num" /><br />
num:<span> {{msg}}</span><br />
<button onclick="unWatch()">unWatch</button> </div>
</body> <script> let vm= new Vue({
el:'div',
data:{
msg:'perfect',
num: },
watch:{
num:function(newValue,oldValue){
console.log("修改了num old="+oldValue+"new="+newValue);
}
}, });
let unwatch=vm.$watch('msg',function(newValue,oldValue){//返回一个取消观察函数,用来停止触发回调: console.log("修改了msg old="+oldValue+"new="+newValue);
});
function unWatch(){ unwatch();
} </script>
</html>
观测一个普通的属性,可以进行回调
实例方法watch深度观测
当观测一个对象时:需要一个深度观测deep这样才能进行回调

发现打印出来新值与旧值得结果都一样,说明没有获取到修改的username
加入的vue代码:
user:{
handler:function(newValue,oldValue){
console.log("修改了username old="+oldValue.username+"new="+newValue.username);
console.log(oldValue==newValue);
},
deep:true
}
加入的HTML:
<input type="text" v-model="user.username" /><br />
username:<span> {{user.username}}</span><br />
当然.$watch也有这样的写法;

其代码为:
let unwatch=vm.$watch('user',{//返回一个取消观察函数,用来停止触发回调:
handler:function(newValue,oldValue){
console.log("修改了msg old="+oldValue+"new="+newValue);
},
deep:true
});
vm.$watch总的代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> 07_常用的实例方法_watch</title>
<script type="text/javascript" src="../js/vue.js" ></script> </head>
<body>
<div>
<input type="text" v-model="msg" /><br />
msg:<span> {{msg}}</span><br />
<input type="text" v-model="num" /><br />
num:<span> {{msg}}</span><br />
<input type="text" v-model="user.username" /><br />
username:<span> {{user.username}}</span><br />
<button onclick="unWatch()">unWatch</button> </div>
</body> <script> let vm= new Vue({
el:'div',
data:{
msg:'perfect',
num:,
user:{
id:'',
username:'perfect*'
} },
watch:{
num:function(newValue,oldValue){
console.log("修改了num old="+oldValue+"new="+newValue);
}, // user:{
// handler:function(newValue,oldValue){
// console.log("修改了username old="+oldValue.username+"new="+newValue.username);
// console.log(oldValue==newValue);
// },
// deep:true
// }
} }); let unwatch=vm.$watch('user',{//返回一个取消观察函数,用来停止触发回调: handler:function(newValue,oldValue){
console.log("修改了msg old="+oldValue+"new="+newValue);
},
deep:true
});
function unWatch(){ unwatch();
} </script>
</html>
观测数据变化的实例方法
Vue基础进阶 之 实例方法的更多相关文章
- Vue基础进阶 之 实例方法--生命周期
在上一篇博客中我们知道生命周期的方法: 生命周期: vm.$mount:手动挂载Vue实例: vm.$destroy:销毁Vue实例,清理数据绑定,移除事件监听: vm.$nextTick:将方法中的 ...
- vue 基础-->进阶 教程(1): 基础(数据绑定)
第一章 建议学习时间4小时 课程共3章 前面的nodejs教程并没有停止更新,因为node项目需要用vue来实现界面部分,所以先插入一个vue教程,以免不会的同学不能很好的完成项目. 本教程,将从零 ...
- vue 基础-->进阶 教程(2): 指令、组件
第二章 建议学习时间4小时 课程共3章 前面的nodejs教程并没有停止更新,因为node项目需要用vue来实现界面部分,所以先插入一个vue教程,以免不会的同学不能很好的完成项目. 本教程,将从零 ...
- vue 基础-->进阶 教程(3):组件嵌套、组件之间的通信、路由机制
前面的nodejs教程并没有停止更新,因为node项目需要用vue来实现界面部分,所以先插入一个vue教程,以免不会的同学不能很好的完成项目. 本教程,将从零开始,教给大家vue的基础.高级操作.组件 ...
- vue 基础-->进阶 教程(2): 指令、自定义指令、组件
第二章 建议学习时间4小时 课程共3章 前面的nodejs教程并没有停止更新,因为node项目需要用vue来实现界面部分,所以先插入一个vue教程,以免不会的同学不能很好的完成项目. 本教程,将从零 ...
- Vue基础进阶 之 列表过渡
在前面的博客我们一直在操作单个元素的过渡,如果是对多个元素过渡,例如列表,这时就要用到<transition-group>这个组件了: 如何使用:将要操作的列表元素放在<transi ...
- Vue基础进阶 之 过渡效果
进入/离开过渡效果:Vue在插入.更新或移除DOM时,可以设置一些动画效果: 如何使用过渡效果:利用<transition></transition>组件将需要应用的过渡效果的 ...
- Vue基础进阶 之 自定义指令
自定义指令-----钩子函数 自定义指令 除了内置指令,Vue也允许用户自定义指令: 注册指令:通过全局API Vue.directive可以注册自定义指令: 自定义指令的钩子函数: bind: in ...
- Vue基础进阶 之 常用的实例属性
Vue实例属性: vue实例直接调用的属性: 常用的实例属性: vm.$data:获取属性: vm.$el:获取实例挂载的元素: vm.$options:获取自定义选项/属性: vm.$refs:获取 ...
随机推荐
- 二、Sql Server 基础培训《进度2-关于主键(知识点学习)》
学习作业2: 问题1:主键都有哪些方式? 问题2:本次实战案例建立的主键采用哪种方式? 问题3:猜猜金蝶K3WISE建立的主键采用哪种方式? 问题4:谈谈手工主键增长设置具体实现思路?(选 ...
- springboot 启动的时候报错 Error creating bean with name 'solrClient'
springboot 启动的时候报错: org.springframework.beans.factory.BeanCreationException: Error creating bean wit ...
- 字符串匹配的 KMP算法
一般字符串匹配过程 KMP算法是字符串匹配算法的一种改进版,一般的字符串匹配算法是:从主串(目标字符串)和模式串(待匹配字符串)的第一个字符开始比较,如果相等则继续匹配下一个字符, 如果不相等则从主串 ...
- wpgcms---字符串截取
在使用wpgcms做项目的时候,会用到要对描述做字符串截取,具体方法如下: {{ contentInfo.summary|slice(0,75) }}
- 我的WafBypass之道(Misc篇)
先知技术社区独家发表本文,如需要转载,请先联系先知技术社区授权:未经授权请勿转载.先知技术社区投稿邮箱:Aliyun_xianzhi#service.alibaba.com: Author:Tr3je ...
- python中文分词库——pyltp
pyltp在win10下安装比较麻烦,因此参考以下安装方式, 1.下载 win10下python3.6 2.安装 下载好了以后, 在命令行下, cd到wheel文件所在的目录, 然后使用命令pip i ...
- sql中join与left-join图解区别
select a.* from YG_BRSYK a left join(SELECT DISTINCT SYXH, STUFF((SELECT '.'+MS FROM #lsb where SY ...
- Docker入门基础(一)
Docker入门基础 Linux只存在文件目录,不存在“盘”的概念 Dockers优点:方便部署环境.资源占用少(微服务) Docker的三大概念 镜像:类似虚拟机的镜像.用俗话说就是安装文件.容器: ...
- 深度学习基础(一)LeNet_Gradient-Based Learning Applied to Document Recognition
作者:Yann LeCun,Leon Botton, Yoshua Bengio,and Patrick Haffner 这篇论文内容较多,这里只对部分内容进行记录: 以下是对论文原文的翻译: 在传统 ...
- C++的初始化成员列表
class CExample { public: int a; float b; //构造函数初始化列表 CExample(): a(),b(8.8) {} //构造函数内部赋值 CExample() ...