解决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 相关文章推荐
javascript支持firefox,ie7页面布局拖拽效果代码
Dec 20 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
Dec 13 Javascript
js confirm()方法的使用方法实例
Jul 13 Javascript
js中arguments的用法(实例讲解)
Nov 30 Javascript
7个去伪存真的JavaScript面试题
Jan 07 Javascript
jQuery实现的购物车物品数量加减功能代码
Nov 16 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
Jul 23 jQuery
vue-cli history模式实现tomcat部署报404的解决方式
Sep 06 Javascript
详解vue中多个有顺序要求的异步操作处理
Oct 29 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
Nov 16 Javascript
基于JavaScript实现十五拼图代码实例
Apr 26 Javascript
Javascript使用integrity属性进行安全验证
Nov 07 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
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
php一些错误处理的方法与技巧总结
2013/08/10 PHP
基于CI框架的微信网页授权库示例
2016/11/25 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
jQuery根据纬度经度查看地图处理程序
2013/05/08 Javascript
js实现商品抛物线加入购物车特效
2020/11/18 Javascript
jQuery过滤特殊字符及JS字符串转为数字
2016/05/26 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
2016/12/31 Javascript
微信小程序 form组件详解及简单实例
2017/01/10 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
2017/03/03 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
2018/01/12 Javascript
浅谈webpack打包生成的bundle.js文件过大的问题
2018/02/22 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
jQuery - AJAX load() 实例用法详解
2019/08/27 jQuery
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
Python获取文件ssdeep值的方法
2014/10/05 Python
Python性能优化的20条建议
2014/10/25 Python
Python中decorator使用实例
2015/04/14 Python
利用Fn.py库在Python中进行函数式编程
2015/04/22 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
Python OpenCV读取png图像转成jpg图像存储的方法
2018/10/28 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
Python字符串格式化输出代码实例
2019/11/22 Python
numpy:np.newaxis 实现将行向量转换成列向量
2019/11/30 Python
Python3的unicode编码转换成中文的问题及解决方案
2019/12/10 Python
台湾演唱会订票网站:StubHub台湾
2019/06/11 全球购物
护理毕业生自荐信范文
2013/12/22 职场文书
秋季运动会广播稿大全
2014/02/17 职场文书
统计员岗位职责
2015/02/11 职场文书
求职信如何撰写?
2019/05/22 职场文书
pytorch 如何使用amp进行混合精度训练
2021/05/24 Python
pandas求平均数和中位数的方法实例
2021/08/04 Python
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis