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:获取 ...
随机推荐
- ganglia问题汇总
1.有数据,不出图 排查方法: 1)确保 php-gd 插件已安装 2) 确保rrdtool 的命令路径是正确的 3)确保php.ini中passthru函数是否开启,参数safe_mode 是否为o ...
- Scikit-learn使用总结
在机器学习和数据挖掘的应用中,scikit-learn是一个功能强大的python包.在数据量不是过大的情况下,可以解决大部分问题.学习使用scikit-learn的过程中,我自己也在补充着机器学习和 ...
- ASP.NET MVC+HighCharts开发统计图表
HighCharts是开源的Web图表js组件,与D3.js一样,经常用于数据可视化.HighCharts图表类型丰富,功能非常强大,是很好的数据可视化解决方案,其官方网站为:http://www.h ...
- c++学习计划
我选择的课程是西北工业大学的<C++程序设计> 理由是:西北工业大学的计算机挺不错的,而且这门课程还有"国家精品"的认证,感觉应该挺不错的. 共48讲...有点多 从2 ...
- linux 的基本操作(linux系统的日常管理)
系统的日常管理 笔者在前面介绍的内容都为linux系统基础类的,如果你现在把前面的内容全部很好的掌握了,那最好了.不过笔者要说的是,即使你完全掌握了,你现在还是不能作为一名合格的linux系统管理员的 ...
- hive 元数据库表描述
元数据库表描述 这一节描述hive元数据库中比较重要的一些表的作用,随着后续对hive的使用逐渐补充更多的内容. mysql元数据库hive中的表: 表名 作用 BUCKETING_COLS 存储bu ...
- python全栈开发 * 12 知识点汇总 * 180530
12 知识点总结 装饰器进阶 ⼀. 通⽤装饰器的回顾1.开闭原则: 对增加功能开放. 对修改代码封闭2.装饰器的作⽤: 在不改变原有代码的基础上给⼀个函数增加功能3.通⽤装饰器的写法:def wrap ...
- JavaScript基础知识(Number的方法)
Number的方法 number : 数字 正数 负数 0 NaN 小数; NaN : not a number; 不是一个数字,但是属于数字类型的: 1.typeof :检测当前的数据类型的: 首先 ...
- 【立体几何】Journey to Jupiter Gym - 101991J 立体几何模板
https://cn.vjudge.net/problem/Gym-101991J 题目很长,其实就是给你一个正三角形,并且告诉你它的中点在Z轴上以及法向量,边长和顶点A的坐标(自由度已定),让你求A ...
- elastricsearch学习笔记
一.基础概念 Elasticsearch有几个核心概念.从一开始理解这些概念会对整个学习过程有莫大的帮助. 接近实时(NRT) Elasticsearch是一个接近实时的搜索平台.这意 ...