仅对ng重复的一个元素应用附加过滤器



我正在处理一个现有的AngularJS项目。我有一个带有键的对象,值显示在页面上。所有的键都应该有一个大写的第一个字母,所以我应用了一个过滤器。但如果键=="sku",那么我需要使所有字母都是大写。

你能建议我怎么做吗?

谢谢

HTML

<tr
class="product-characteristics"
ng-repeat="(prop, val) in $ctrl.product.additional_properties"
>
<td class="name">
{{prop | capitalize}}
</td>
<td>
<a ng-click="$ctrl.propertyClicked(prop, val)">{{val| titleCase}}</a>
</td>
</tr>

最简单的方法是为这种情况创建单独的条件。

<td class="name" ng-if="prop === 'sku'">
{{ prop | uppercase }}
</td>
<td class="name" ng-if="prop !== 'sku'">
{{ prop | capitalize }}
</td>

但在未来,您可能想要扩展此解决方案,因此更好的选择(并且可读性更强(是使用switchcase选项。

<td class="name" ng-switch="prop">
<span ng-switch-when="sku">{{ prop | uppercase }}</span>
<span ng-switch-default>{{ prop | capitalize }}</span>
</td>

最新更新