vue watch自动检测数据变化实时渲染的方法


Posted in Javascript onJanuary 16, 2018

本文介绍了vue watch自动检测数据变化实时渲染的方法,分享给大家,具体如下:

首先确认 watch是一个对象,一定要当成对象来用。

对象就有键,有值。

键:就是你要监控的那个家伙,比如说$route,这个就是要监控路由的变化。或者是data中的某个变量。
值可以是函数:就是当你监控的家伙变化时,需要执行的函数,这个函数有两个形参,第一个是当前值,第二个是变化后的值。

值也可以是函数名:不过这个函数名要用单引号来包裹。

第三种情况厉害了。

值是包括选项的对象:选项包括有三个。

  1. 第一个handler:其值是一个回调函数。即监听到变化时应该执行的函数。
  2. 第二个是deep:其值是true或false;确认是否深入监听。(一般监听时是不能监听到对象属性值的变化的,数组的值变化可以听到。)
  3. 第三个是immediate:其值是true或false;确认是否以当前的初始值执行handler的函数。

watch实例

vue watch自动检测数据变化实时渲染的方法

上次讲到可以使用this.$set或vm.set来动态的改变,已经渲染在页面上的数据(添加,删除)重新计算重新渲染。

有时候你会需要,动态的改变某个数据或者值,然后根据你改变的值再做出其它的处理操作(如:显示,隐藏,增,删)等,如下面代码例子:

这里举个Tab的例子:

在vue的项目里新建一个Tab的组件页面

<template>
{{index}}
 <div>
   <div @click="showFun(0)">Tab1</div>
   <div @click="showFun(1)">Tab2</div>
   <div @click="showFun(2)">Tab3</div>
 </div>
 <div>
   <div v-if="index == 0">cont1</div>
   <div v-if="index == 1">cont1</div>
   <div v-if="index == 2">cont1</div>
 </div>
</template>
<script>
export default {
 data(){
  return {
    index: 0 // 索引
  }
 },
watch:{ // 实时检测
  index(idx){ //实时监听index的变化
    console.log(idx) //在这里你可以再根据idx的值,做出其它的操作
  }
},
 methods:{
   showFun(idx){
     this.index = idx
   }
 }
}
</script>

watch可以让你自定义一个侦听器,当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的

我再举一个搜索的例子:

<template>
 <input v-model="value" /> // 搜索框
</template>
<script>
export default {
 data(){
  return {
    value: '' // 值
  }
 },
 watch:{
   value(val){ // 实时监听数据变化
     this.wat_fun(val)
   }
 }, 
 methods:{
   wat_fun(val){ // 这里可以调用搜索api接口
    console.log(val)
   }
 }
}
</script>

举了两个简单的例子,希望对大家能有所帮助~也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 写类方式之一
Jul 05 Javascript
JS 判断undefined的实现代码
Nov 26 Javascript
jquery事件与函数的使用介绍
Sep 29 Javascript
jQuery过滤选择器详解
Jan 13 Javascript
jQuery1.9+中删除了live以后的替代方法
Jun 17 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
Mar 08 Javascript
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
Sep 14 Javascript
原生JS实现轮播图效果
Oct 12 Javascript
微信小程序学习笔记之获取位置信息操作图文详解
Mar 29 Javascript
vue列表单项展开收缩功能之this.$refs的详解
May 05 Javascript
微信小程序如何调用图片接口API并居中显示
Jun 29 Javascript
JavaScript中this的学习笔记及用法整理
Feb 17 Javascript
动态加载权限管理模块中的Vue组件
Jan 16 #Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
Jan 15 #Javascript
解析Angular 2+ 样式绑定方式
Jan 15 #Javascript
基于jquery的on和click的区别详解
Jan 15 #jQuery
仿淘宝JSsearch搜索下拉深度用法
Jan 15 #Javascript
vue2.0 父组件给子组件传递数据的方法
Jan 15 #Javascript
深入理解requireJS-实现一个简单的模块加载器
Jan 15 #Javascript
You might like
深入PHP数据加密详解
2013/06/18 PHP
php中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
2016/05/31 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
2018/12/07 PHP
javascript脚本调试方法小结
2008/11/24 Javascript
拖动布局之保存布局页面cookies篇
2010/10/29 Javascript
StringTemplate遇见jQuery冲突的解决方法
2011/09/22 Javascript
为jquery的ajaxfileupload增加附加参数的方法
2014/03/04 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
2014/05/28 Javascript
纯js实现div内图片自适应大小(已测试,兼容火狐)
2014/06/16 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
2014/06/24 Javascript
nodejs的10个性能优化技巧
2014/07/15 NodeJs
jquery实现的Banner广告收缩效果代码
2015/09/02 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
AngularJS基础 ng-options 指令详解
2016/08/02 Javascript
浅谈JavaScript 数据属性和访问器属性
2016/09/01 Javascript
Angular.Js中过滤器filter与自定义过滤器filter实例详解
2017/05/08 Javascript
浅谈Javascript常用正则表达式应用
2019/03/08 Javascript
jquery获取input输入框中的值
2019/11/13 jQuery
vue实现下载文件流完整前后端代码
2020/11/17 Vue.js
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
Python代码实现http/https代理服务器的脚本
2019/08/12 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
2019/08/13 Python
苹果美国官方商城:Apple美国
2016/08/24 全球购物
数组越界问题
2015/10/21 面试题
服装采购员岗位职责
2014/03/15 职场文书
素质教育标语
2014/06/27 职场文书
高二学年自我鉴定范文(2篇)
2014/09/26 职场文书
琅琊山导游词
2015/02/05 职场文书
联村联户简报
2015/07/21 职场文书
提档介绍信范文
2015/10/22 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
禁毒心得体会范文
2016/01/15 职场文书
Golang中异常处理机制详解
2021/06/08 Golang
一篇文章带你了解Python和Java的正则表达式对比
2021/09/15 Python