解决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脚本
Aug 04 Javascript
JavaScript执行顺序详细介绍
Dec 04 Javascript
js数组去重的常用方法总结
Jan 24 Javascript
js 判断控件获得焦点的示例代码
Mar 04 Javascript
JavaScript中实现异步编程模式的4种方法
Sep 24 Javascript
浅谈js中的引用和复制(传值和传址)
Sep 18 Javascript
js实现带进度条提示的多视频上传功能
Dec 13 Javascript
VUE长按事件需求详解
Oct 18 Javascript
vue 引用自定义ttf、otf、在线字体的方法
May 09 Javascript
通过实践编写优雅的JavaScript代码
May 30 Javascript
jQuery实现的记住帐号密码功能完整示例
Aug 03 jQuery
微信小程序地图实现展示线路
Jul 29 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 获取远程文件内容的函数代码
2010/03/24 PHP
php格式化日期实例分析
2014/11/12 PHP
php结合md5实现的加密解密方法
2016/01/25 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
认识延迟时间为0的setTimeout
2008/05/16 Javascript
javascript(jquery)利用函数修改全局变量的代码
2009/11/02 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
jQuery的promise与deferred对象在异步回调中的作用
2016/05/03 Javascript
Jquery ajax请求导出Excel表格的实现代码
2016/06/08 Javascript
Node.js中防止错误导致的进程阻塞的方法
2016/08/11 Javascript
node通过npm写一个cli命令行工具
2017/10/12 Javascript
利用node.js如何创建子进程详解
2017/12/09 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
vue实现axios图片上传功能
2019/08/20 Javascript
p5.js绘制旋转的正方形
2019/10/23 Javascript
微信小程序开发中var that =this的用法详解
2020/01/18 Javascript
[54:43]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第一场 2月22日
2021/03/11 DOTA
pymongo为mongodb数据库添加索引的方法
2015/05/11 Python
在Django中限制已登录用户的访问的方法
2015/07/23 Python
Python中的日期时间处理详解
2016/11/17 Python
Java分治归并排序算法实例详解
2017/12/12 Python
Python pymongo模块常用操作分析
2018/09/01 Python
python读写csv文件并增加行列的实例代码
2019/08/01 Python
python3 写一个WAV音频文件播放器的代码
2019/09/27 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
印度尼西亚综合购物网站:Lazada印尼
2016/09/07 全球购物
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
What is EJB
2016/07/22 面试题
营销总经理的岗位职责
2013/12/15 职场文书
2015年教师工作总结范文
2015/03/31 职场文书
超强台风观后感
2015/06/09 职场文书
资深HR教你写好简历中的自我评价
2019/05/07 职场文书
扩展多台相同的Web服务器
2021/04/01 Servers
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript