总的来说,我认为做你想做的事情的干净方法是将数据转换成一种格式,在这种格式中,你可以循环它而不需要额外的步骤.这样,您将永远不需要v-for
中的那些额外变量.
来自您的代码的示例可能如下所示:
const app = new Vue({
el: '#app',
data: {
years: [2024, 2025, 2120],
usersData: {...}
},
computed: {
// user objects for each year
ageData() {
return Object.fromEntries(this.years.map(year => [year,
Object.values(this.usersData).map(user => this.userInYear(user, year))
] ))
}
},
methods: {
userInYear(user, year){
return {...user, age: user.age + (year - 2023)}
}
},
});
现在,您可以在没有中断和恶作剧的情况下迭代它:
<div v-for="(users, year) in ageData" :key="year">
<b>In {{ year }}:</b>
<div v-for="user in users" :key="user.name">
{{ user.name }} will be {{ user.age }} years old.
</div>
</div>
它更易于阅读和更改,而且它还有一个额外的好处,即您可以在控制台中判断ageData
.
也就是说,我认为可以在v-for
中声明额外的变量是非常有趣的,我假设这是可能的,因为VUE从提供的字符串中解析和构建表达式的方式,我非常确定它不会被删除,如果您和您的同事对它感到满意(并准备像刚才一样一遍又一遍地听到上面的内容),那么一定要try 一下.