【发布时间】:2019-04-29 17:33:57
【问题描述】:
我正在使用计算值来动态过滤数组(“订单”)。
计算出的.filter() 函数允许用户按订单号、名称或参考号动态搜索:
data() {
return {
orders: [],
search: "" // search string from a text input
};
},
computed: {
filtered:
return this.orders.filter(order => {
const s =
order.order_number + order.reference + order.name;
const su = s.toUpperCase();
return su.match(this.search.toUpperCase());
});
}
我正在使用v-for 循环来呈现搜索结果,如下所示:
<tbody v-for="(order, index) in filtered" :key="order.id">
<tr>
<td @click="add_events(order, index)>{{order.order_number}}</td>
<td>{{order.reference}}</td>
<td>{{order.name}}</td>
...
</tr>
</tbody>
我想使用@click 来定位过滤数组中的特定组件(对象)并使用$set 将值(“objEvents”)附加到该对象:
methods: {
add_events (order, index) {
const objEvents= [ external data from an API ]
this.$set(this.orders[index], "events", objEvents)
}
}
但是,filtered 数组(“filtered”)中组件的index 与 original 数组(“orders”中的index 不同") 等add_events 方法针对错误的组件。
我可以使用key 来定位正确的组件吗?还是有其他方法可以识别过滤数组中的目标组件?
【问题讨论】:
标签: javascript arrays vue.js vuejs2 v-for