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

时间:2015-06-02 08:25:57

标签: javascript angularjs sorting filter

我有以下情况(服务中的翻译过滤器,在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>

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

我的问题是我被要求根据翻译的值(类似string in strings | orderBy: mySearch)进行排序,我找不到如何从StringsController.mySearch

以编程方式调用过滤器

P.S。服务器不返回过滤器(不知道这是否相关)

1 个答案:

答案 0 :(得分:4)

您可以看到guide for filters

因此,在您的情况下,取决于定义.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); })

});