重复多个标签而不在 Aurelia 中创建容器
Repeat multiple tags without creating a container in Aurelia
假设我有:
<template>
<!-- some code here -->
<div>
<div repeat.for="item of arr">
<label for.bind="item.id">${item.name}</label>
</div>
<div repeat.for="item of arr">
<input type="text" id.bind="item.id" value.bind="item.value" />
</div>
</div>
<!-- more code here -->
</template>
并且假设我的 ViewModel 的 arr
属性 是:
arr = [
{ id: 'txtID', name: 'ID', value: '' },
{ id: 'txtFirstName', name: 'First Name', value: '' },
{ id: 'txtLastName', name: 'Last Name', value: '' }
];
Aurelia 会这样渲染它:
<!-- some code here -->
<div>
<div>
<label for='txtID'>ID</label>
</div>
<div>
<label for='txtFirstName'>First Name</label>
</div>
<div>
<label for='txtLastName'>Last Name</label>
</div>
<div>
<input type="text" id="txtID" value="" />
</div>
<div>
<input type="text" id="txtFirstName" value="" />
</div>
<div>
<input type="text" id="txtLastName" value="" />
</div>
</div>
<!-- more code here -->
但我需要它像这样渲染:
<!-- some code here -->
<div>
<div>
<label for='txtID'>ID</label>
</div>
<div>
<input type="text" id="txtID" value="" />
</div>
<div>
<label for='txtFirstName'>First Name</label>
</div>
<div>
<input type="text" id="txtFirstName" value="" />
</div>
<div>
<label for='txtLastName'>Last Name</label>
</div>
<div>
<input type="text" id="txtLastName" value="" />
</div>
</div>
<!-- more code here -->
有两个条件:
- 我无法将它们放入容器中
- 我无法创建自定义元素
而且,伙计们,我恳请你们理解我的问题是:
如何在不创建容器的情况下使用repeat.for重复多个项目?
不要建议更改我的 HTML 或类似的东西,因为我创建它只是作为我一直需要的东西的示例,并且总是以创建容器(或无容器自定义)结束元素,当我没有容器时),但我想知道是否有任何方法可以顺利地做到这一点。
例如,在 KO 中,只要我们将 foreach
命令放入父级,我就可以简单地执行:
<!-- some code here -->
<div data-bind="foreach: arr">
<div>
<label data-bind="for: id">{{name}}</label>
</div>
<div>
<input type="text" data-bind="id: id, value: value" />
</div>
</div>
<!-- more code here -->
只需使用这样的模板标签
<template>
<!-- some code here -->
<div>
<template repeat.for="item of arr">
<div>
<label for.bind="item.id">${item.name}</label>
</div>
<div>
<input type="text" id.bind="item.id" value.bind="item.value" />
</div>
</template>
</div>
<!-- more code here -->
</template>
template
标签是执行此操作的常规方法,因此 Aurelia 将简单地渲染其中的所有内容。
假设我有:
<template>
<!-- some code here -->
<div>
<div repeat.for="item of arr">
<label for.bind="item.id">${item.name}</label>
</div>
<div repeat.for="item of arr">
<input type="text" id.bind="item.id" value.bind="item.value" />
</div>
</div>
<!-- more code here -->
</template>
并且假设我的 ViewModel 的 arr
属性 是:
arr = [
{ id: 'txtID', name: 'ID', value: '' },
{ id: 'txtFirstName', name: 'First Name', value: '' },
{ id: 'txtLastName', name: 'Last Name', value: '' }
];
Aurelia 会这样渲染它:
<!-- some code here -->
<div>
<div>
<label for='txtID'>ID</label>
</div>
<div>
<label for='txtFirstName'>First Name</label>
</div>
<div>
<label for='txtLastName'>Last Name</label>
</div>
<div>
<input type="text" id="txtID" value="" />
</div>
<div>
<input type="text" id="txtFirstName" value="" />
</div>
<div>
<input type="text" id="txtLastName" value="" />
</div>
</div>
<!-- more code here -->
但我需要它像这样渲染:
<!-- some code here -->
<div>
<div>
<label for='txtID'>ID</label>
</div>
<div>
<input type="text" id="txtID" value="" />
</div>
<div>
<label for='txtFirstName'>First Name</label>
</div>
<div>
<input type="text" id="txtFirstName" value="" />
</div>
<div>
<label for='txtLastName'>Last Name</label>
</div>
<div>
<input type="text" id="txtLastName" value="" />
</div>
</div>
<!-- more code here -->
有两个条件:
- 我无法将它们放入容器中
- 我无法创建自定义元素
而且,伙计们,我恳请你们理解我的问题是:
如何在不创建容器的情况下使用repeat.for重复多个项目?
不要建议更改我的 HTML 或类似的东西,因为我创建它只是作为我一直需要的东西的示例,并且总是以创建容器(或无容器自定义)结束元素,当我没有容器时),但我想知道是否有任何方法可以顺利地做到这一点。
例如,在 KO 中,只要我们将 foreach
命令放入父级,我就可以简单地执行:
<!-- some code here -->
<div data-bind="foreach: arr">
<div>
<label data-bind="for: id">{{name}}</label>
</div>
<div>
<input type="text" data-bind="id: id, value: value" />
</div>
</div>
<!-- more code here -->
只需使用这样的模板标签
<template>
<!-- some code here -->
<div>
<template repeat.for="item of arr">
<div>
<label for.bind="item.id">${item.name}</label>
</div>
<div>
<input type="text" id.bind="item.id" value.bind="item.value" />
</div>
</template>
</div>
<!-- more code here -->
</template>
template
标签是执行此操作的常规方法,因此 Aurelia 将简单地渲染其中的所有内容。