AngularJS:自定义过滤器并注入控制器

时间:2016-04-20 09:29:41

标签: angularjs angular-filters

我对自定义过滤器

的问题很少

1)当我们创建自定义过滤器时,是否必须在控制器中注入自定义过滤器以从控制器功能调用它?

我见过一个代码,其中人创建自定义过滤器并从控制器功能调用它...是否可能?只需看看代码。我还没有测试过。

<div ng-app="myapp" ng-controller="myctl">
    <input id="btnok" type="button" value="ShowItems" ng-click="myfunction();" />
    {{result}}
</div>

var app = angular.module("myapp", []);

app.filter("CustomFilter", function () {
    return function (input) {
        var out = [];
        for (var i = input.length - 1; i >= 0 ; i--) {
            out.push(input[i]);
        }
        return out;
    }
});

app.controller("myctl", function ($scope, $filter) {
    $scope.Items = ["C#", "JavaScript", "Html"];

    $scope.myfunction = function () {
        $scope.result = $filter('CustomFilter')($scope.Items);
    }
})

只是看到名为CustomFilter的自定义过滤器尚未注入控制器,但过滤器正在从控制器功能调用.....是不是?

2)在控制器中注入自定义过滤器时是否可以使用不同的名称?请参阅一个代码,该代码取自此网址http://budiirawan.com/angular-js-use-filter-controller/

(function(angular) {

'use strict';

angular.module('appModule')
  .filter('hello', function() {
    return function(input) {
      return 'hello ' + input;
    }
  });
})(window.angular);  

(function(angular) {

'use strict';

angular.module('appModule', [])
  .controller('appController', ['$scope', '$filter', 'helloFilter', function($scope, $filter, helloFilter) {

    $scope.name1 = $filter('hello')('budi');
    $scope.name2 = helloFilter('sinta');

  }]);

})(window.angular);

参见 hello 过滤器已经在控制器中注入了一个名为 helloFilter 的不同名称,它是如何工作的...如何角度解析或理解我们正在尝试指出你好过滤器?请指导我。

由于

1 个答案:

答案 0 :(得分:3)

1)您不必将自定义过滤器注入控制器,您可以将$filter注入控制器,而不是添加自定义过滤器。

2)Angular在我从网上看到的示例中进行依赖注入时添加过滤器过滤器(不是100%确定为什么我总是将$ filter注入我的控制器而不是过滤器本身)

http://sravi-kiran.blogspot.co.uk/2013/12/InvokingAngularJsFiltersFromController.html http://budiirawan.com/angular-js-use-filter-controller/ https://dzone.com/articles/invoking-angular-js-filters