解决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 dom 基本操作小结
Apr 11 Javascript
jQuery 常见操作实现方式和常用函数方法总结
May 06 Javascript
JS实现标签页效果(配合css)
Apr 03 Javascript
jQuery 获取URL的GET参数值的小例子
Apr 18 Javascript
js unicode 编码解析关于数据转换为中文的两种方法
Apr 21 Javascript
轮播的简单实现方法
Jul 28 Javascript
关于Webpack dev server热加载失败的解决方法
Feb 22 Javascript
vue-cli构建项目下使用微信分享功能
May 28 Javascript
angular 组件通信的几种实现方式
Jul 13 Javascript
JS 实现微信扫一扫功能
Sep 14 Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
Oct 12 Javascript
js前端如何写一个精确的倒计时代码
Oct 25 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中根据某年第几天计算出日期年月日的代码
2011/02/24 PHP
PHP学习之数组的定义和填充
2011/04/17 PHP
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
2012/06/17 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
2013/09/28 PHP
ThinkPHP实现二级循环读取的方法
2014/11/03 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
javascript的原生方法获取数组中的最大(最小)值
2012/12/19 Javascript
解析瀑布流布局:JS+绝对定位的实现
2013/05/08 Javascript
js实现收缩菜单效果实例代码
2013/10/30 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
JS实现黑色大气的二级导航菜单效果
2015/09/18 Javascript
Java中Timer的用法详解
2015/10/21 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
2016/03/30 Javascript
AngularJS包括详解及示例代码
2016/08/17 Javascript
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
JS简单实现点击跳转登陆邮箱功能的方法
2017/10/31 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
jQuery基于随机数解决中午吃什么去哪吃问题示例
2018/12/29 jQuery
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
详解微信小程序网络请求接口封装实例
2019/05/02 Javascript
vue内置组件component--通过is属性动态渲染组件操作
2020/07/28 Javascript
解决vue项目打包上服务器显示404错误,本地没出错的问题
2020/11/03 Javascript
[38:30]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场2
2014/05/24 DOTA
Python中集合的内建函数和内建方法学习教程
2015/08/19 Python
Python实现将HTML转换成doc格式文件的方法示例
2017/11/20 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
python 实现字符串下标的输出功能
2020/02/13 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
三年级数学教学反思
2014/01/31 职场文书
学校万圣节活动方案
2014/02/13 职场文书
2014年三万活动总结
2014/04/26 职场文书
篮球比赛口号
2014/06/10 职场文书
羽毛球比赛策划方案
2014/06/13 职场文书