watch内部调用methods方法报错

错误例子还原

例子

<script>
	export default{
		data(){
			return {
				data: 1,
			}
		},
		watch: {
			data: (newV, oldV) => {
				this.printf() // 此处调用会出现 undefined
			}
		},
		methods: {
			printf(){
				console.log("111111")
			}
		}		
	}
</script>

错误原因

在vue的Watch监听器要注意一点,那就是watch的内部的监听方法,一定一定不要使用箭头表达式,正确的写法应该是

watch: {
    data: function(newV, oldV){
        this.printf
    }
}

关于watch使用方式的vue官方链接

理解methods,computed,watch的调用时机

最近在学Vue框架的 时候对methods,computed不甚理解,看了几篇别人写的博客感觉描述的也很模糊,故而在稍微明白他们之间主要差异的时候,写文章记录下。

1.methods中定义的函数

其调用时机是:当页面引用了vue data关键字的属性,并且这些属性发生改变的时候,就会执行methods中定义的函数,并且不管methods中定义的函数是否依赖了data关键字中的属性,methods中定义的函数都会被执行。methods中定义的函数能像普通函数那样,当主动调用methods中定义的函数的时候,这些函数每次调用都会执行。

 2.computed中定义的函数

在computed中定义的函数的调用时机是:当页面引用了vue data关键字的属性,并且这些属性发生改变的时候,如果computed中定义的函数也依赖了这些改变的属性,那么computed中定义的函数才会被执行。

也就是computed中定义的函数被Vue框架回调的条件是

  • 1.函数内依赖了vue的属性
  • 2.这些属性发生了改变
  • 3.这些属性被页面引用

这三个条件同时满足,才会触发computed中定义的某个函数的回调。而且和methods定义的函数,其调用语法也是不一样的,computed中定义的函数,调用的时候后面不能有小括号,类似属性的调用。

并不是每次主动调用computed中定义的函数都会执行,computed中定义的函数即使是主动调用,其是否会执行也和内部的依赖属性是否发生改变有关。

3.watch中定义的方法

是用来监听某个属性发生变化的时候,触发回调。在watch中定义方法的时候,方法的键必须是vue中已经定义的属性。

new Vue({
  el: "#app",
  data: {
   num: 1,
   num2: 2,
   value3: 88
   
  },
  methods: {
     getNum:function(){ //每次更新页面的时候就会执行
           alert("methods");
           return "现在的num:";
     }
  },
   computed: {
      getNum2:function(){ //第一次执行,后面当依赖的属性发生改变的时候执行
      alert("computed");
        return "num2:"  this.num2;
     }
  },
  watch: {
   value3: function(value){  //value3是已经在data中定义的属性,value是该属性发生改变的时候的值
    alert(" 现在的value:"  value);
   }
  }
})
<div id="app">
<p>{{num}}</p>
<p>{{getNum()}}</p>
<button v-on:click="num  ">Num  </button>
<button v-on:click="num--">Num--</button>
<button v-on:click="num2  ">Num2  </button>
<button v-on:click="value3  ">value3  </button>
</div>

上面的理解,来源于代码运行情况的测试和总结,或有不周到之处,还望读者见谅。 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持Devmax。 

vue watch内部调用methods方法报错的解决方案的更多相关文章

  1. 详解Vue中Computed与watch的用法与区别

    这篇文章主要介绍了Vue中computed和watch的使用与区别,文中通过示例为大家进行了详细讲解,对Vue感兴趣的同学,可以学习一下

  2. Vue MVVM模型与data及methods属性超详细讲解

    MVVM旨在利用WPF中的数据绑定函数,通过从视图层中几乎删除所有GUI代码(代码隐藏),更好地促进视图层开发与模式其余部分的分离,这篇文章主要介绍了Vue MVVM模型与data及methods属性

  3. vue2中组件互相调用实例methods中的方法实现详解

    vue在同一个组件内,方法之间经常需要互相调用,下面这篇文章主要给大家介绍了关于vue2中组件互相调用实例methods中的方法实现的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  4. vue+axios methods方法return取不到值问题及解决

    这篇文章主要介绍了vue+axios methods方法return取不到值问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  5. 一篇文章教你简单使用Vue的watch侦听器

    这篇文章主要为大家介绍了Vue watch侦听器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

  6. 使用Vue逐步实现Watch属性详解

    这篇文章主要介绍了使用Vue逐步实现Watch属性详解,watch对象中的value分别支持函数、数组、字符串、对象,较为常用的是函数的方式,当想要观察一个对象以及对象中的每一个属性的变化时,便会用到对象的方式

  7. until封装watch常用逻辑简化代码写法

    这篇文章主要介绍了until将watch最常用的逻辑进行封装简化代码写法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  8. Vue watch原理源码层深入讲解

    watch 是由用户定义的数据监听,当监听的属性发生改变就会触发回调,这项配置在业务中是很常用。在面试时,也是必问知识点,一般会用作和 computed 进行比较。那么本文就来带大家从源码理解 watch 的工作流程,以及依赖收集和深度监听的实现

  9. vue组件实现首次加载就触发watch

    这篇文章主要介绍了vue组件实现首次加载就触发watch方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  10. Vue不能watch数组和对象变化解决方案

    这篇文章主要为大家介绍了Vue不能watch数组和对象变化解决方案示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部