解决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 相关文章推荐
通过DOM脚本去设置样式信息
Sep 19 Javascript
JavaScript常用基础知识强化学习
Dec 09 Javascript
Jquery判断form表单数据是否变化
Mar 30 Javascript
JQuery实现简单的服务器轮询效果实例
Mar 31 Javascript
整理JavaScript对DOM中各种类型的元素的常用操作
May 05 Javascript
AngularGauge 属性解析详解
Sep 06 Javascript
node.js中EJS 模板快速入门教程
May 08 Javascript
vue做网页开场视频的实例代码
Oct 20 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
May 10 Javascript
如何用vue-cli3脚手架搭建一个基于ts的基础脚手架的方法
Dec 12 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
Dec 18 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
Feb 27 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 has encountered a Stack overflow问题解决方法
2014/11/03 PHP
PHP编写daemon process详解及实例代码
2016/09/30 PHP
php查询及多条件查询
2017/02/26 PHP
Yii框架ACF(accessController)简单权限控制操作示例
2019/04/26 PHP
使用Modello编写JavaScript类
2006/12/22 Javascript
多引号嵌套的变量命名的问题
2014/05/09 Javascript
JQuery右键菜单插件ContextMenu使用指南
2014/12/19 Javascript
JavaScript使用concat连接数组的方法
2015/04/06 Javascript
js点击文本框后才加载验证码实例代码
2015/10/20 Javascript
如何在AngularJs中调用第三方插件库
2017/05/21 Javascript
JS常见构造模式实例对比分析
2018/08/27 Javascript
jQuery超简单遮罩层实现方法示例
2018/09/06 jQuery
详解javascript 变量提升(Hoisting)
2019/03/12 Javascript
微信小程序实现的一键复制功能示例
2019/04/24 Javascript
layui上传图片到服务器的非项目目录下的方法
2019/09/26 Javascript
[01:09:19]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第二场 2月28日
2021/03/11 DOTA
实例讲解Python中global语句下全局变量的值的修改
2016/06/16 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
学习Python列表的基础知识汇总
2020/03/10 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
python中常见错误及解决方法
2020/06/21 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
机械工程系毕业生求职信
2013/09/27 职场文书
医学专业毕业生个人求职信
2013/12/25 职场文书
运动会四百米广播稿
2014/01/19 职场文书
运动员口号
2014/06/09 职场文书
创优争先心得体会
2014/09/11 职场文书
学生检讨书怎么写?
2014/10/10 职场文书
个人租房协议书
2014/11/28 职场文书
2014年体育教师工作总结
2014/12/03 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
新郎答谢词
2015/01/04 职场文书
销售督导岗位职责
2015/04/10 职场文书
二胎满月酒致辞
2015/07/29 职场文书
十大必看国产动漫排名,魁拔上线,第二曾在日本播出
2022/03/18 国漫