Vuejs v-for根据某些条件添加标记属性或事件监听器

时间:2018-02-24 18:52:48

标签: vuejs2 vue-component v-for

我有一个对象数组,我在模板中循环。

<div v-for="(list, idx) in collection" :key="list.id">
    <misc v-if="!idx" :is-master="!idx" :selection="list" v-on:report="onSelectionReport"></misc>
    <misc v-else :is-master="!idx" :selection="list"></misc>
</div>

如您所见,有两个“misc”标签。唯一的原因是我只希望“报告”事件从单个实例中冒出来。

这样可行,但在这种情况下有没有办法保存v-if / v-else结构? (这会导致一个misc标签)。

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以定义内联事件处理程序以检查idx

的值
<div v-for="(list, idx) in collection" :key="list.id">
    <misc :is-master="!idx" :selection="list" v-on:report="arg => idx || onSelectionReport(arg)"></misc>
</div>

然而,正如@Lawrence Cherone建议的那样,在组件内部执行此逻辑可能更为清晰 - 尤其是因为您无论如何都将idx作为属性(通过is-master)传递。