v-if 和 splice on users pick from v-model
v-if and splice on users pick from v-model
我有以下代码(来自教程,但我想扩展一下):
<div style="margin-top: 10px;">
v-for="task in taskItems"
:key="task.id"
<q-icon :name="task.icon"/>
<div
{{ task.text }}
</div>
</div>
我的 taskItems 数组如下所示:
taskItems: [
{
id: 1,
icon: 'settings',
text: 'Dolor, sit amet consectetm tot',
name: 'style'
},
{
id: 2,
icon: 'exit',
text: 'Lossssr dolor, sit amet consectetm tot',
name: 'getaway'
},
{
id: 3,
icon: 'lego',
text: 'Lomet consectetm tot',
name: 'buildingblocks'
},
{
id: 4,
icon: 'lego',
text: 'Lomet consectetm tot',
name: 'buildingblocks'
}
]
我有以下 v-model:
numberOfTasks: [
{ value: '1', label: '1' },
{ value: '2', label: '2' },
{ value: '3', label: '3' },
{ value: '4', label: '4' },
}
用户可以通过点击按钮来选择一个对象(因为这不是主要焦点而被忽略),如果他们选择第一个,那么它等于值“1”,如果他们选择第二,则等于'2',依此类推
问题是,我希望我的 v-for 位于顶部,其中包含 4 个任务,以显示其数组中等于用户选择的 numberOfTasks
的元素数。
因此,如果用户选择值:'3',则 v-for 将仅显示任务数组中的 3 个任务。
我是 Vue 的新手,尝试过一些东西,但 none 有效。
如何将它们绑定在一起,我是否需要在我的 ?
中使用 task.splice
任何人有想法,该怎么办?
这是徒手写的,所以可能不是 100% 正确,但你可以在 Vue 中模拟索引 for 循环。我添加了一个变量 selectedNumberOfTasks
,它只是一个数字(数据变量或其他),代表用户选择的内容。
<div v-for="index in selectedNumberOfTasks" :key="index">
{{ taskItems[index].text }}
</div>
这将在变量 index
中计数到最大值 selectedNumberOfTasks
。
等效于 JS 的 for 循环是
for (let i = 0; i < this.selectedNumberOfTasks; i++)
我假设 taskItems
是一个 属性 数据以及 numberOfTask
存储选择的值形式 numberOfTasks
。
您需要在 v-for="task in actualTaskItems"
中更改 v-for="task in taskItems"
,其中 actualTaskItems
是计算的 属性,就像这样
// …
computed: {
actualTaskItems() {
return this.taskItems.splice(0, this.numberOfTask);
}
}
我有以下代码(来自教程,但我想扩展一下):
<div style="margin-top: 10px;">
v-for="task in taskItems"
:key="task.id"
<q-icon :name="task.icon"/>
<div
{{ task.text }}
</div>
</div>
我的 taskItems 数组如下所示:
taskItems: [
{
id: 1,
icon: 'settings',
text: 'Dolor, sit amet consectetm tot',
name: 'style'
},
{
id: 2,
icon: 'exit',
text: 'Lossssr dolor, sit amet consectetm tot',
name: 'getaway'
},
{
id: 3,
icon: 'lego',
text: 'Lomet consectetm tot',
name: 'buildingblocks'
},
{
id: 4,
icon: 'lego',
text: 'Lomet consectetm tot',
name: 'buildingblocks'
}
]
我有以下 v-model:
numberOfTasks: [
{ value: '1', label: '1' },
{ value: '2', label: '2' },
{ value: '3', label: '3' },
{ value: '4', label: '4' },
}
用户可以通过点击按钮来选择一个对象(因为这不是主要焦点而被忽略),如果他们选择第一个,那么它等于值“1”,如果他们选择第二,则等于'2',依此类推
问题是,我希望我的 v-for 位于顶部,其中包含 4 个任务,以显示其数组中等于用户选择的 numberOfTasks
的元素数。
因此,如果用户选择值:'3',则 v-for 将仅显示任务数组中的 3 个任务。
我是 Vue 的新手,尝试过一些东西,但 none 有效。
如何将它们绑定在一起,我是否需要在我的 ?
中使用 task.splice任何人有想法,该怎么办?
这是徒手写的,所以可能不是 100% 正确,但你可以在 Vue 中模拟索引 for 循环。我添加了一个变量 selectedNumberOfTasks
,它只是一个数字(数据变量或其他),代表用户选择的内容。
<div v-for="index in selectedNumberOfTasks" :key="index">
{{ taskItems[index].text }}
</div>
这将在变量 index
中计数到最大值 selectedNumberOfTasks
。
等效于 JS 的 for 循环是
for (let i = 0; i < this.selectedNumberOfTasks; i++)
我假设 taskItems
是一个 属性 数据以及 numberOfTask
存储选择的值形式 numberOfTasks
。
您需要在 v-for="task in actualTaskItems"
中更改 v-for="task in taskItems"
,其中 actualTaskItems
是计算的 属性,就像这样
// …
computed: {
actualTaskItems() {
return this.taskItems.splice(0, this.numberOfTask);
}
}