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 中的replace方法说明
Apr 13 Javascript
HTML代码中标签的全部属性 中文注释说明
Mar 26 Javascript
JS多物体 任意值 链式 缓冲运动
Aug 10 Javascript
用示例说明filter()与find()的用法以及children()与find()的区别分析
Apr 26 Javascript
JS 作用域与作用域链详解
Apr 07 Javascript
jQuery匹配文档链接并添加class的方法
Jun 26 Javascript
JS实现生成会变大变小的圆环实例
Aug 05 Javascript
数组Array的一些方法(总结)
Feb 17 Javascript
jstree单选功能的实现方法
Jun 07 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
Aug 04 Javascript
JS动画实现回调地狱promise的实例代码详解
Nov 08 Javascript
微信小程序实现左右列表联动
May 19 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
轻松修复Discuz!数据库
2008/05/03 PHP
PHP生成UTF8文件的方法
2010/05/15 PHP
php中adodbzip类实例
2014/12/08 PHP
php针对cookie操作的队列操作类实例
2014/12/10 PHP
php将远程图片保存到本地服务器的实现代码
2015/08/03 PHP
yii2缓存Caching基本用法示例
2016/07/18 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
javascript forEach通用循环遍历方法
2010/10/11 Javascript
input按钮的事件处理大全
2010/12/10 Javascript
Javascript this 关键字 详解
2014/10/22 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
js的window.showModalDialog及window.open用法实例分析
2015/01/29 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
实例讲解vue源码架构
2019/01/24 Javascript
在vue中使用G2图表的示例代码
2019/03/19 Javascript
在vue中使用vuex,修改state的值示例
2019/11/08 Javascript
如何在wxml中直接写js代码(wxs)
2019/11/14 Javascript
Node.js中console.log()输出彩色字体的方法示例
2019/12/01 Javascript
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
python打开文件并获取文件相关属性的方法
2015/04/23 Python
python排序方法实例分析
2015/04/30 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
python打包多类型文件的操作方法
2020/09/21 Python
python3实现飞机大战
2020/11/29 Python
自定义html标记替换html5新增元素
2008/10/17 HTML / CSS
用HTML5制作数字时钟的教程
2015/05/11 HTML / CSS
用HTML5制作视频拼图的教程
2015/05/13 HTML / CSS
PHP如何与mysql建立链接
2013/05/05 面试题
开学典礼主持词
2014/03/19 职场文书
公证书样本
2014/04/10 职场文书
4s店销售经理岗位职责
2014/07/19 职场文书
刑事上诉状范文
2015/05/22 职场文书
在职证明书模板
2015/06/15 职场文书
go web 预防跨站脚本的实现方式
2021/06/11 Golang