解决Vue watch里调用方法的坑


Posted in Javascript onNovember 07, 2020

这里是说watch调用methods里方法的时候,页面经常会报找不到方法

这个时候一定要在watch里去输出一下this,

看看this包裹的壳是不是多了好多层,所以找不到方法,虽然我到现在还没理解为啥有时候会出现一层或几层壳的问题。

例如

正常情况下用this.functionname()就可以调用了。

但是在一些情况下(现在本人还没找到原因)在控制台输出this的时候你会发现数据经常是这样包裹的a{name},name里面对你的methods还包裹了一层,所以使用方法的时候就会变成 this.a.methods.funtionname()

原因还在找,不过解决办法先记下来。

补充知识:使用 Vue 的最佳做法---不要在“created”和“watch”中调用方法

我就废话不多说了,大家还是直接看代码吧~

watch: { 
      params: {
        handler: function (val, oldVal) {
          if (val == '1') {
            this.initTableData()
          }
        },
        deep: true
      },
      property: {
        immediate: true,
        handler: function (val, oldVal) {
          this.initTableData()
        },
      },
    },

Vue开发人员经常犯的一个错误是他们不必要地在created和watch中调用方法。 其背后的想法是,我们希望在组件初始化后立即运行watch。

// 不好的做法 created: () { this.handleChange() }, methods: { handleChange() { // stuff happens } }, watch () { property() { this.handleChange() } }

但是,Vue为此提供了内置的解决方案,这是我们经常忘记的Vue watch属性。

我们要做的就是稍微重组watch并声明两个属性:

1.handler (newVal, oldVal)-这是我们的watch方法本身。

2. immediate: true- 代表如果在 wacth 里声明了之后,就会立即先去执行里面的handler方法,如果为 false就跟我们以前的效果一样,不会在绑定的时候就执行

// 好的做法
methods: {
 handleChange() {
  // stuff happens
 }
},
watch () {
 property {
  immediate: true
  handler() {
   this.handleChange()
  }
 }
}

以上这篇解决Vue watch里调用方法的坑就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 前的按键判断代码
Mar 19 Javascript
JQuery的Alert消息框插件使用介绍
Oct 09 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
Jul 09 Javascript
jQuery客户端分页实例代码
Nov 18 Javascript
浅谈jQuery中对象遍历.eq().first().last().slice()方法
Nov 26 Javascript
jQuery使用hide方法隐藏页面上指定元素的方法
Mar 30 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
Jun 24 Javascript
微信小程序页面滑动屏幕加载数据效果
Nov 16 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
Nov 09 jQuery
javascript按顺序加载运行js方法
Dec 01 Javascript
原生js+canvas实现下雪效果
Aug 02 Javascript
js 实现Material UI点击涟漪效果示例
Sep 23 Javascript
浅谈vue.watch的触发条件是什么
Nov 07 #Javascript
html+vue.js 实现漂亮分页功能可兼容IE
Nov 07 #Javascript
解决vue watch数据的方法被调用了两次的问题
Nov 07 #Javascript
vue 避免变量赋值后双向绑定的操作
Nov 07 #Javascript
浅谈Vue static 静态资源路径 和 style问题
Nov 07 #Javascript
解决VueCil代理本地proxytable无效报错404的问题
Nov 07 #Javascript
Nuxt 项目性能优化调研分析
Nov 07 #Javascript
You might like
PHP中ADODB类详解
2008/03/25 PHP
PHP 读取和修改大文件的某行内容的代码
2009/10/30 PHP
PHP CLI模式下的多进程应用分析
2013/06/03 PHP
hadoop常见错误以及处理方法详解
2013/06/19 PHP
php隐藏IP地址后两位显示为星号的方法
2014/11/21 PHP
mysql_escape_string()函数用法分析
2016/04/25 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
2019/10/04 PHP
JavaScript 三种创建对象的方法
2009/10/16 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
2015/10/10 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
浅谈JS原型对象和原型链
2016/03/02 Javascript
javascript读取文本节点方法小结
2016/12/15 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
js变量值传到php过程详解 将php解析成数据
2019/06/26 Javascript
vue实现浏览器全屏展示功能
2019/11/27 Javascript
electron 如何将任意资源打包的方法步骤
2020/04/16 Javascript
react基本安装与测试示例
2020/04/27 Javascript
js实现直播点击飘心效果
2020/08/19 Javascript
JavaScript实现跟随鼠标移动的盒子
2021/01/28 Javascript
[04:32]DOTA2著名解说配音敌法师 现场专访海涛怒切假腿
2013/12/20 DOTA
浅谈Django REST Framework限速
2017/12/12 Python
Python列表删除元素del、pop()和remove()的区别小结
2019/09/11 Python
python kafka 多线程消费者&手动提交实例
2019/12/21 Python
python解包概念及实例
2021/02/17 Python
使用css如何制作时间ICON方法实践
2012/11/12 HTML / CSS
英国领先的在线鱼贩:The Fish Society
2020/08/12 全球购物
消防安全汇报材料
2014/02/08 职场文书
幼儿园师德演讲稿
2014/05/06 职场文书
个人整改措施落实情况汇报
2014/10/29 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
房屋质量投诉书
2015/07/02 职场文书
校园安全主题班会
2015/08/12 职场文书
史上最全的军训拉歌口号
2015/12/25 职场文书
团组织关系介绍信
2019/06/24 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书
Python语言中的数据类型-序列
2022/02/24 Python