AngularJS以编程方式从服务调用过滤器(按自定义过滤器排序)

nor*_*orb 9 javascript sorting filter angularjs

我有以下情况(服务中的翻译过滤器,在HTML文件中使用)

// serviceFile
angular.module('myModule')
  .service('translation')
  .filter('translate', function(translation) {
    // translate stuff
    return 'translatedString';
  });

// controllerFile
angular.module('myModule')
  .controller('StringsController', function(blabla, translation) {
    $scope.mySort = function() {
      return "some magic should happen here";
    };
  });

// htmlFile
<tr ng-repeat="string in strings">
  <td> 
      {{ string | translate: 'name' }} 
  </td>
</tr>
Run Code Online (Sandbox Code Playgroud)

(上面的代码有效,但由于我缺乏经验,可能省略了一些重要的部分)

我的问题是我被要求根据翻译的值(类似的东西string in strings | orderBy: mySearch)排序,我找不到如何以编程方式调用过滤器StringsController.mySearch

PS不会从服务返回过滤器(不知道这是否相关)

Gru*_*ndy 5

您可以查看过滤器指南

因此,根据情况,.filter('translate',您可以像定义一样使用它

.controller('StringsController', function(blabla, $filter) {
    //simple transtale
    var translatedString = $filter('translate')(stringForTranslate);

    //ordering
    var ordered = $filter('orderBy')(arrayForOrdering,function(el){ return  $filter('translate')(el); })

});
Run Code Online (Sandbox Code Playgroud)