使用Vue进行组件化开发,少不了组件间的方法调用,和方法传递。在开发过程中偶然遇到在子组件中用this.$emit和this.$parent调用父组件都失效。官方文档没说具体原因,我琢磨了半天发现你要在调用子组件的标签内,手动绑定父类方法,例如<suncomponet @sun="parent" /> 这样在子组件中才能使用this.$emit(‘sun’,param),这里sun就是父类的parent方法。但官方文档不需要@sun="parent" 这一步,不知道是不是版本问题。
然后就是在子组件中调用父类方法时,如果父类会对传到子类的参数进行修改时候,控制台会报错。建议如果需要修改,则在子组件中定义data对应传进来的参数,并通过watch监听传进来的参数改变data值,这样就不会报错。