Angular:如果selectionItems小于1,则删除字符串中的最后一个字母

时间:2014-01-03 15:34:57

标签: javascript jquery angularjs

如果selectedItems为1或更小,我将如何删除此字符串中的最后一个字母。

<p translate translate-values="{value: selectedItems.length | removePlural}">
 TEAMS_EDIT_SELECTED_PLURAL
</p>

 TEAMS_EDIT_SELECTED_PLURAL: 'You have selected {{value}} items.',

过滤

myFilters.filter('removePlural', function($translate) {
    if (selectedItems.length <= 1) {

    } else {

    }
});

1 个答案:

答案 0 :(得分:2)

正如dskh在评论中所说,你应该考虑使用ngPluralize指令。

简单地截断字符串会很快导致问题,例如daisiesdaisy不会遵循该模式。此外,如果您需要让您的应用程序使用多种语言,那么您真的会成为一条小溪。

<p ng-pluralize 
   count="selectedItems"
   when="{'0': 'You have note selected any items.',
          'one': 'You have selected one item.',
          'other': 'You have selected {} items.'}">
</p>

您似乎正在使用ngTranslate module(即使您在问题中没有说过)。在这种情况下,使用翻译过滤器是没有意义的,您需要在控制器中使用translate service

app.controller("MyController", function($translate) {
  $scope.text = {
    TEAMS_EDIT_SELECTED_PLURAL : $translate("TEAMS_EDIT_SELECTED_PLURAL"),
    TEAMS_EDIT_SELECTED_SINGULAR : $translate("TEAMS_EDIT_SELECTED_SINGULAR"),
    TEAMS_EDIT_SELECTED_NONE : $translate("TEAMS_EDIT_SELECTED_NONE")
  }
});

在您看来,您可以执行以下操作

<p ng-pluralize 
   count="selectedItems"
   when="{'0': text.TEAMS_EDIT_SELECTED_NONE,
          'one': text.TEAMS_EDIT_SELECTED_SINGULAR,
          'other': text.TEAMS_EDIT_SELECTED_PLURAL }">
</p>