如何仅针对 v-for 数组中的最后一项?
How to target only the last item in a v-for array?
我在 v-for 中有一个对象数组来为每个项目创建一个组件,如下所示:
<div v-for="(expense, idx) in myExpenses" :key="idx">
<expense-panel
v-model.number="expense.expensesValue"
:expense="expense"
:myExpenses="myExpenses"
:showEdit="showEdit">
</expense-panel>
</div>
我有一个方法可以将 "expense" 添加到数组中:
(我记录了我要专门定位的项目)
addExpense() {
this.myExpenses.push({
expensesKey: "",
expensesValue: null,
subExpense: null,
});
//The last item in the array
console.log(this.myExpenses[this.myExpenses.length - 1]);
},
Vue有没有办法专门在数组的最后一项添加一个输入元素?
我已经在父级的 Data() 中有一个 showInput = false。
例如,您可以将 slot
添加到 expense-panel
并有条件地渲染 your-input
只有当它是正在渲染的最后一个项目时,就像这样:
<div v-for="(expense, idx) in myExpenses" :key="idx">
<expense-panel
v-model.number="expense.expensesValue"
:expense="expense"
:myExpenses="myExpenses"
:showEdit="showEdit">
<your-input v-if="idx === myExpenses.length - 1" />
</expense-panel>
</div>
其他替代方法可能是将道具传递给面板(如 is-last
)并将输入烘焙到 expense-panel
。
此外,如果输入应该在最后一项之后以视觉方式呈现,您可以简单地在整个列表之后添加输入:
<div v-for="(expense, idx) in myExpenses" :key="idx">
<expense-panel
v-model.number="expense.expensesValue"
:expense="expense"
:myExpenses="myExpenses"
:showEdit="showEdit">
</expense-panel>
</div>
<your-input />
我在 v-for 中有一个对象数组来为每个项目创建一个组件,如下所示:
<div v-for="(expense, idx) in myExpenses" :key="idx">
<expense-panel
v-model.number="expense.expensesValue"
:expense="expense"
:myExpenses="myExpenses"
:showEdit="showEdit">
</expense-panel>
</div>
我有一个方法可以将 "expense" 添加到数组中:
(我记录了我要专门定位的项目)
addExpense() {
this.myExpenses.push({
expensesKey: "",
expensesValue: null,
subExpense: null,
});
//The last item in the array
console.log(this.myExpenses[this.myExpenses.length - 1]);
},
Vue有没有办法专门在数组的最后一项添加一个输入元素?
我已经在父级的 Data() 中有一个 showInput = false。
例如,您可以将 slot
添加到 expense-panel
并有条件地渲染 your-input
只有当它是正在渲染的最后一个项目时,就像这样:
<div v-for="(expense, idx) in myExpenses" :key="idx">
<expense-panel
v-model.number="expense.expensesValue"
:expense="expense"
:myExpenses="myExpenses"
:showEdit="showEdit">
<your-input v-if="idx === myExpenses.length - 1" />
</expense-panel>
</div>
其他替代方法可能是将道具传递给面板(如 is-last
)并将输入烘焙到 expense-panel
。
此外,如果输入应该在最后一项之后以视觉方式呈现,您可以简单地在整个列表之后添加输入:
<div v-for="(expense, idx) in myExpenses" :key="idx">
<expense-panel
v-model.number="expense.expensesValue"
:expense="expense"
:myExpenses="myExpenses"
:showEdit="showEdit">
</expense-panel>
</div>
<your-input />