解决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 相关文章推荐
ExtJS扩展 垂直tabLayout实现代码
Jun 21 Javascript
ExtJs 3.1 XmlTreeLoader Example Error
Feb 09 Javascript
javascript常用代码段搜集
Dec 04 Javascript
jQuery中nextAll()方法用法实例
Jan 07 Javascript
JavaScript中实现map功能代码分享
Jun 11 Javascript
jQuery实现自动切换播放的经典滑动门效果
Sep 12 Javascript
Bootstrap Table使用整理(二)
Jun 09 Javascript
详解Vue.js搭建路由报错 router.map is not a function
Jun 27 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
Nov 15 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
Apr 24 Javascript
laypage.js分页插件使用方法详解
Jul 27 Javascript
element form 校验数组每一项实例代码
Oct 10 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
在普通HTTP上安全地传输密码
2007/07/21 PHP
基于PHP文件操作的详细诠释
2013/06/21 PHP
PHP 等比例缩放图片详解及实例代码
2016/09/18 PHP
PHP 无限级分类
2017/05/04 PHP
php实现的后台表格分页功能示例
2017/10/23 PHP
JavaScript面象对象设计
2008/04/28 Javascript
Jquery下attr和removeAttr的使用方法
2010/12/28 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
js 获取class的元素的方法 以及创建方法getElementsByClassName
2013/03/11 Javascript
jquery滚动条插件jScrollPane的使用介绍
2013/11/08 Javascript
js 去除字符串第一位逗号的方法
2014/06/07 Javascript
深入浅析JavaScript中prototype和proto的关系
2015/11/15 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
分类解析jQuery选择器
2016/11/23 Javascript
JS验证全角与半角及相互转化的介绍
2017/05/18 Javascript
关于 angularJS的一些用法
2017/11/29 Javascript
使用npm安装最新版本nodejs
2018/01/18 NodeJs
详解vue数组遍历方法forEach和map的原理解析和实际应用
2018/11/15 Javascript
深入webpack打包原理及loader和plugin的实现
2020/05/06 Javascript
[00:20]TI9不朽观赛名额抽取
2019/08/05 DOTA
Python读写Redis数据库操作示例
2014/03/18 Python
Python实现图片转字符画的示例
2017/08/22 Python
Python 关于反射和类的特殊成员方法
2017/09/14 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
python中return如何写
2020/06/18 Python
python如何提升爬虫效率
2020/09/27 Python
StubHub新加坡:购买和出售全球活动门票
2017/03/10 全球购物
DNA基因检测和分析:23andMe
2019/05/01 全球购物
Puma印度官网:德国运动品牌
2019/10/06 全球购物
求职信内容考虑哪几点
2013/10/05 职场文书
环境工程大学生自荐信
2013/10/21 职场文书
管理部部长岗位职责
2013/12/05 职场文书
红旗团支部事迹材料
2014/01/27 职场文书
餐饮周年庆活动方案
2014/08/14 职场文书
数据结构课程设计心得体会
2016/01/15 职场文书
用Python实现一个打字速度测试工具来测试你的手速
2021/05/28 Python