Vue.js v-for中的闭包,属性插值

Vue.js v-for中的闭包,属性插值,vue.js,Vue.js,我有这个基本的设置 <div v-for="n in 4"> <some-component @on-some-event="onSomeEvent(n)"></some-component> </div> 但是用{}包装onSomeEvent会抛出一个警告:属性插值在Vue.js指令和特殊属性中是不允许的。 我可以将n索引传递到组件中,但这似乎不那么优雅,因为我可能无法修改某些组件 我对Vue有些陌生,所以可能缺少了这类东西的一些核心功能?

我有这个基本的设置

<div v-for="n in 4">
  <some-component @on-some-event="onSomeEvent(n)"></some-component>
</div>
但是用
{}
包装
onSomeEvent
会抛出一个警告:
属性插值在Vue.js指令和特殊属性中是不允许的。

我可以将
n
索引传递到组件中,但这似乎不那么优雅,因为我可能无法修改
某些组件


我对Vue有些陌生,所以可能缺少了这类东西的一些核心功能?

您没有遗漏任何东西,信息是正确的,在Vue中,您将无法使用类似的插值。

但是,您可能需要更改在组件之间管理事件和传递数据的方式。在您的示例中,您可以这样绑定数据:

<div v-for="n in 4">
    <some-component :n="n"></some-component>
</div>
现在,在每个组件中,都有可用的
n
,就像任何其他属性一样()

然后,在分派事件时,您可以这样调用它,而不需要参数:

onSomeEvent()
在事件本身上,您可以访问
n

console.log('Component' + this.n + ...)


....
过滤器:{
通过(处理器,n){
返回函数(){
处理程序()(n,…参数)
}
}
},
方法:{
onSomeEvent(){
console.log(…参数)
}
}

欢迎使用堆栈溢出!虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。
onSomeEvent()
console.log('Component' + this.n + ...)
<div v-for="n in 4">
  <some-component @on-some-event="onSomeEvent | pass n"></some-component>
</div>

....
filters: {
   pass(handler, n) {
       return function() {
           handler()(n, ...arguments)
       }
   }
},
methods: {
   onSomeEvent() {
       console.log(...arguments)  
   }
}