仅对 ng-repeat 的一个元素应用附加过滤器
Apply additional filter only to one element of ng-repeat
我正在处理现有的 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>
但将来您可能希望扩展此解决方案,因此更好的解决方案(并且更具可读性)将是使用 switch-case 选项。
<td class="name" ng-switch="prop">
<span ng-switch-when="sku">{{ prop | uppercase }}</span>
<span ng-switch-default>{{ prop | capitalize }}</span>
</td>
我正在处理现有的 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>
但将来您可能希望扩展此解决方案,因此更好的解决方案(并且更具可读性)将是使用 switch-case 选项。
<td class="name" ng-switch="prop">
<span ng-switch-when="sku">{{ prop | uppercase }}</span>
<span ng-switch-default>{{ prop | capitalize }}</span>
</td>