我正在尝试使用类似的参数发出函数。
template: `
<div class="searchDropDown">
<div class="dropdown is-active">
<div class="dropdown-trigger">
<button class="button" aria-haspopup="true" aria-controls="dropdown-menu">
<span>{{selectedItem}}</span>
</button>
</div>
<div class="dropdown-menu" id="dropdown-menu" role="menu">
<div class="dropdown-content">
<a class="dropdown-item" v-for="item in drop" @click="$emit('select-menu-item($event)')">
{{item.name}}
</a>
</div>
</div>
</div>
</div>
`
这是我正在尝试将项目传递给像参数一样的方法。
这是我尝试发出功能的组件:
<search-component v-bind="searchProps" @select-menu-item="selectedITem($event)"></search-component>
这是我的方法:
selectedITem(arg1) {
console.log("cl")
console.log(arg1)
}
如果我不尝试传递参数,则一切正常,因此我的方法 selectedITem 有效。当我尝试像这样传递参数时,什么也没有发生,并且我没有收到任何错误。
答案 0 :(得分:7)
@OneToMany
中的以下参数是您发出的函数中的参数。
$emit()
以及您的组件方法中。
$emit('select-menu-item', $event, 1, 2, 3, 4, "cupcakes")
并在您的实际组件标记中。您不需要添加参数。只需编写对该方法的引用
selectMenuItem: function(evt, num1, num2, num3, num4, food){
}
示例
<search-component v-bind="searchProps" @select-menu-item="selectMenuItem">
window.onload = function(){
const component = function() {
return {
template: `
<div>
<button @click="$emit('click-me', 'foobar')">
Click Me
</button>
</div>
`,
props: ["data"]
}
}
new Vue({
el: container,
data: {},
components: { "my-component": component(), },
methods: {
clickMe: function(str){
console.log(str);
}
}
});
}
答案 1 :(得分:3)
只需添加来自@Albana Clara的更多答案即可。
您可以合并参数以及传递的事件。
示例:
<search-component v-bind="searchProps" @select-menu-item="selectMenuItem('test', ...arguments)">
selectMenuItem: function(a, b) {
console.log(a + " " + b);
// test foobar
}