如何为 ng-repeat 中的一次迭代添加动态跨度元素?
How to add a dynamic span element for only one iteration in an ng-repeat?
这是我想要实现的目标,我得到了一个包含一组输入的 table:
<tr ng-repeat="row in signupForm track by $index"
class="data-row">
<td class="label-cell data-cell">
<label for="{{row.model}}" ng-bind="(row.label) + ':'"></label>
</td>
<td class="data-cell">
<input type="{{row.type}}" ng-model="user[row.model]"
placeholder="{{row.placeholder}}"
class="round input" id="{{row.model}}">
</td>
<td class="error-cell data-cell">
<span class="error">*</span> //Need to be able to insert image here instead
</td>
</tr>
signupForm
对象如下所示:
$scope.signupForm = [
{
label: 'Firstname',
type: 'text',
model: 'firstname',
placeholder: 'Firstname'
},
{
label: 'Lastname',
type: 'text',
model: 'lastname',
placeholder: 'Lastname'
},
{
label: 'Age',
type: 'text',
model: 'age',
placeholder: 'Age'
},
{
label: 'Country',
type: 'text',
model: 'country',
placeholder: 'Country'
},
{
label: 'Display name',
type: 'text',
model: 'displayName',
placeholder: 'Maximum of 16 characters'
},
{
label: 'E-mail',
type: 'email',
model: 'email',
placeholder: 'Example@backslash.com'
},
{
label: 'Password',
type: 'password',
model: 'password',
placeholder: 'Minimum of 8 characters'
},
{
label: 'Confirm password',
type: 'password',
model: 'confirmedPassword',
placeholder: 'Confirm password'
}
]
现在,对于 "displayName" 行,我需要能够更改 error-cell
中的跨度内容,但仅限于这一行。我一直坐在这里试图找出一个好的方法,但我想不出一个合适的方法来解决这个问题。
这是一张图片来说明我的意思,绿色代表我需要影响的行,蓝色代表我需要能够更改的单元格。
您可以在该跨度上使用 ng-if。下面的示例只是针对整个跨度执行此操作,但您应该能够执行类似的操作
<tr ng-repeat="row in signupForm track by $index"
class="data-row">
<td class="label-cell data-cell">
<label for="{{row.model}}" ng-bind="(row.label) + ':'"></label>
</td>
<td class="data-cell">
<input type="{{row.type}}" ng-model="user[row.model]"
placeholder="{{row.placeholder}}"
class="round input" id="{{row.model}}">
</td>
<td class="error-cell data-cell">
<span class="error" ng-if="row.model === 'displayName'">*</span>
</td>
</tr>
这是我想要实现的目标,我得到了一个包含一组输入的 table:
<tr ng-repeat="row in signupForm track by $index"
class="data-row">
<td class="label-cell data-cell">
<label for="{{row.model}}" ng-bind="(row.label) + ':'"></label>
</td>
<td class="data-cell">
<input type="{{row.type}}" ng-model="user[row.model]"
placeholder="{{row.placeholder}}"
class="round input" id="{{row.model}}">
</td>
<td class="error-cell data-cell">
<span class="error">*</span> //Need to be able to insert image here instead
</td>
</tr>
signupForm
对象如下所示:
$scope.signupForm = [
{
label: 'Firstname',
type: 'text',
model: 'firstname',
placeholder: 'Firstname'
},
{
label: 'Lastname',
type: 'text',
model: 'lastname',
placeholder: 'Lastname'
},
{
label: 'Age',
type: 'text',
model: 'age',
placeholder: 'Age'
},
{
label: 'Country',
type: 'text',
model: 'country',
placeholder: 'Country'
},
{
label: 'Display name',
type: 'text',
model: 'displayName',
placeholder: 'Maximum of 16 characters'
},
{
label: 'E-mail',
type: 'email',
model: 'email',
placeholder: 'Example@backslash.com'
},
{
label: 'Password',
type: 'password',
model: 'password',
placeholder: 'Minimum of 8 characters'
},
{
label: 'Confirm password',
type: 'password',
model: 'confirmedPassword',
placeholder: 'Confirm password'
}
]
现在,对于 "displayName" 行,我需要能够更改 error-cell
中的跨度内容,但仅限于这一行。我一直坐在这里试图找出一个好的方法,但我想不出一个合适的方法来解决这个问题。
这是一张图片来说明我的意思,绿色代表我需要影响的行,蓝色代表我需要能够更改的单元格。
您可以在该跨度上使用 ng-if。下面的示例只是针对整个跨度执行此操作,但您应该能够执行类似的操作
<tr ng-repeat="row in signupForm track by $index"
class="data-row">
<td class="label-cell data-cell">
<label for="{{row.model}}" ng-bind="(row.label) + ':'"></label>
</td>
<td class="data-cell">
<input type="{{row.type}}" ng-model="user[row.model]"
placeholder="{{row.placeholder}}"
class="round input" id="{{row.model}}">
</td>
<td class="error-cell data-cell">
<span class="error" ng-if="row.model === 'displayName'">*</span>
</td>
</tr>