使用计算或方法获取 v-for 中的索引
Get index within v-for using computed or method
我想知道是否可以在 vue 中直接在 v-for 中获取对象数组的索引,并将此值传递给计算 属性 或方法,类似于此处,甚至计算 属性
<div v-for="(object, index) in objects(index)"></div>
methods: {
objects(index){
const categoryId = Object.keys(this.data);
return this.data[categoryId[index]].extras;
}
}
我需要索引,因为它更方便return 根据定义的键获得正确的值,有什么方法可以实现吗?
使用计算值转换数据并对其进行循环。我不确定你的 this.data
是什么样子,但像这样的东西应该可以工作(根据你的需要调整它):
<div v-for="object in computed_objects"></div>
computed: {
computed_objects(){
return Object.keys(this.data).map(categoryId => this.data[categoryId].extras)
}
}
您可以在 v-for
指令 创建的每个元素上绑定一个方法调用,例如,每当用户单击 <li>
元素时,它将获得被点击项目的索引:
new Vue({
el: '#app',
data: {
clickedIndex: null,
weekDays: ['monday', 'tuesday', 'wednesday', 'thursday', 'friday']
},
methods: {
handleClick(i) {
this.clickedIndex = i;
}
}
})
Vue.config.productionTip = false;
Vue.config.devtools = false;
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
<div id="app">
<ul>
<li v-for="(day,i) in weekDays" v-on:click="handleClick(i)">{{day}}</li>
</ul>
<p>Index clicked {{ clickedIndex }}</p>
</div>
我想知道是否可以在 vue 中直接在 v-for 中获取对象数组的索引,并将此值传递给计算 属性 或方法,类似于此处,甚至计算 属性
<div v-for="(object, index) in objects(index)"></div>
methods: {
objects(index){
const categoryId = Object.keys(this.data);
return this.data[categoryId[index]].extras;
}
}
我需要索引,因为它更方便return 根据定义的键获得正确的值,有什么方法可以实现吗?
使用计算值转换数据并对其进行循环。我不确定你的 this.data
是什么样子,但像这样的东西应该可以工作(根据你的需要调整它):
<div v-for="object in computed_objects"></div>
computed: {
computed_objects(){
return Object.keys(this.data).map(categoryId => this.data[categoryId].extras)
}
}
您可以在 v-for
指令 创建的每个元素上绑定一个方法调用,例如,每当用户单击 <li>
元素时,它将获得被点击项目的索引:
new Vue({
el: '#app',
data: {
clickedIndex: null,
weekDays: ['monday', 'tuesday', 'wednesday', 'thursday', 'friday']
},
methods: {
handleClick(i) {
this.clickedIndex = i;
}
}
})
Vue.config.productionTip = false;
Vue.config.devtools = false;
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
<div id="app">
<ul>
<li v-for="(day,i) in weekDays" v-on:click="handleClick(i)">{{day}}</li>
</ul>
<p>Index clicked {{ clickedIndex }}</p>
</div>