Ken*_*AUD 11 vue.js vue-component vuejs2
对于VueJS 2.0项目,我在父组件上有以下内容
<template>
<child></child>
<button @click="$emit('childEvent)"></button>
</template>
Run Code Online (Sandbox Code Playgroud)
在我有的子组件上:
{
events: { 'childEvent' : function(){.... },
ready() { this.$on('childEvent',...) },
methods: { childEvent() {....} }
}
Run Code Online (Sandbox Code Playgroud)
按钮点击似乎没有任何效果.是否需要创建一个父方法然后发送给孩子?我正在使用vuejs 1.但现在我对父母与孩子沟通的工作方式感到困惑
qw3*_*w3n 19
虽然其他答案是正确的,但通常可以使用数据驱动的方法.
我打算为那些寻找这个问题的答案的人添加这个,这个问题除了道具之外还需要其他方法.尝试将焦点设置在自定义表单组件中的特定输入时,我遇到了类似的问题.要做到这一点,我必须给自定义组件一个ref,然后执行此操作.
this.$refs.customInput.$emit('focus');
//or
this.$refs.customInput.directlyCallMethod();
Run Code Online (Sandbox Code Playgroud)
这将访问子项的vue实例,然后您可以发出该组件听到的事件.
小智 10
您可以使用自定义Vue实例.
// Globally
const eventBus = new Vue()
// In your child
eventBus.$on('eventName', () => {
// Do something
});
// In your parent
eventBus.$emit('eventName')
Run Code Online (Sandbox Code Playgroud)
从父级到子级的事件$broadcast()在 Vue 1.0中完成,而在 Vue 2.0 中根本不可能。
而且您可能不需要它,通常有比不需要事件更好的解决方案,但这取决于您的用例。
| 归档时间: |
|
| 查看次数: |
15566 次 |
| 最近记录: |