这是一个代码示例。
Vue.component('button-counter', {
template: '<button v-on:click="emit_event">button</button>',
methods: {
emit_event: function () {
this.$emit('change', 'v1', 'v2', 'v3') // Here I emit multiple value
}
},
})
new Vue({
el: '#parent',
data: {
args: ""
},
methods: {
change: function (...args) {
this.args = args
console.log(args)
}
}
})
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.3/vue.common.js"></script>
<div id="parent">
{{ args }} <br />
<button-counter v-on:change="change(1234, $event)"></button-counter>
</div>
Run Code Online (Sandbox Code Playgroud)
从父组件,我想通过change()获取参数传递(在本示例中为1234),还需要子组件发出的每个值。我尝试使用$ event捕获子发射的值,但是$ event仅设置为第一个子发射的值(在此示例中为'v1')
有什么办法吗?我知道我可以发出一个数组来捕获多个值。但是某些库只是发出多个值。
这是上面示例的codepen。 https://codepen.io/anon/pen/MmLEqX?editors=1011
小智 10
我会这样做:
<button-counter v-on:change="change(1, ...arguments)">
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以使用解构语法
this.$emit('change', { x:'v1', y:'v2', z: 'v3' })
Run Code Online (Sandbox Code Playgroud)
你可以像这样访问这些值
<button-counter @change="change"></button-counter>
methods: { change({x, y, z}) { .... } }
Run Code Online (Sandbox Code Playgroud)
定义一个处理程序,该处理程序接受事件中的多个参数,并将其传递给除静态参数之外的change方法。
<button-counter v-on:change="(...args)=>this.change(1234,...args)"></button-counter>
Run Code Online (Sandbox Code Playgroud)
或者
<button-counter v-on:change="(...args)=>this.change([1234,...args])"></button-counter>
Run Code Online (Sandbox Code Playgroud)
并将您的方法更改为
change: function (args) {
this.args = args
console.log(args)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13012 次 |
| 最近记录: |