仅对 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>