解决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动画对象支持加速、减速、缓入、缓出的实现代码
Sep 30 Javascript
JS页面延迟执行一些方法(整理)
Nov 11 Javascript
D3.js实现文本的换行详解
Oct 14 Javascript
AngularJS递归指令实现Tree View效果示例
Nov 07 Javascript
手机端js和html5刮刮卡效果
Sep 29 Javascript
jquery实现转盘抽奖功能
Jan 06 Javascript
深入理解Javascript箭头函数中的this
Feb 13 Javascript
利用vueJs实现图片轮播实例代码
Jun 03 Javascript
Jquery让form表单异步提交代码实现
Nov 14 jQuery
JS代码检查工具ESLint介绍与使用方法
Feb 04 Javascript
Javascript查看大图功能代码实现
May 07 Javascript
Vue 401配合Vuex防止多次弹框的案例
Nov 11 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
桌面中心(三)修改数据库
2006/10/09 PHP
PHP链表操作简单示例
2016/10/15 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
给网站上的广告“加速”显示的方法
2007/04/08 Javascript
javascript 面向对象编程基础:继承
2009/08/21 Javascript
javascript来定义类的规范小结
2010/11/19 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
2013/07/03 Javascript
jQuery如何取id有.的值一般的方法是取不到的
2014/04/18 Javascript
jQuery中get和post方法传值测试及注意事项
2014/08/08 Javascript
JavaScript中使用自然对数ln的方法
2015/06/14 Javascript
学习jQuey中的return false
2015/12/18 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
2016/05/24 Javascript
分类解析jQuery选择器
2016/11/23 Javascript
JS中传递参数的几种不同方法比较
2017/01/20 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
jquery append与appendTo方法比较
2017/05/24 jQuery
浅析为什么a="abc" 不等于 a=new String("abc")
2017/10/25 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
vue获取时间戳转换为日期格式代码实例
2019/04/17 Javascript
基于layui框架响应式布局的一些使用详解
2019/09/16 Javascript
python获取文件版本信息、公司名和产品名的方法
2014/10/05 Python
Python使用cookielib模块操作cookie的实例教程
2016/07/12 Python
Python中用post、get方式提交数据的方法示例
2017/09/22 Python
使用Python调取任意数字资产钱包余额功能
2019/08/15 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
2019/12/10 Python
Ubuntu中配置TensorFlow使用环境的方法
2020/04/21 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
澳大利亚自然和有机的健康美容产品一站式商店:Ziani Beauty
2017/12/28 全球购物
Zipadee-Zip襁褓过渡毯:Sleeping Baby
2018/12/30 全球购物
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/04/11 面试题
班主任个人工作反思
2014/04/28 职场文书
文明礼貌演讲稿
2014/05/12 职场文书
法律专业求职信
2014/05/24 职场文书
党员学习群众路线教育实践活动对照检查材料
2014/09/23 职场文书
中学生检讨书范文
2014/11/03 职场文书
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android