可以在app.controller之后调用app.filter吗?

时间:2015-09-29 07:41:52

标签: angularjs

在此Angular JS Pagination Fiddle example

var app = angular.module('myApp', ['ui.bootstrap']);
app.filter('offset', function() {
alert('filter is called');
return function(input, start) {
    return input.slice(start);
};})

app.controller('someController', function($scope) {
alert('controller is called');
$scope.countries = [];
$scope.currentPage = 1;
$scope.itemsPerPage = 20;
$scope.maxSize = 20;
$scope.totalItems = 250;

for(var i = 0; i < $scope.totalItems; i++){
    $scope.countries[i] = { name: 'country ' + i }
}
});

是否有可能在调用app.controller之前调用app.filter?如果是,我们该怎么做?

1 个答案:

答案 0 :(得分:0)

首先,你的标签不正确。您可能将Angular UI Bootstrap作为模块依赖项包含在内,但这纯粹是一个Angular问题,因此您可能需要修复它。

其次,过滤器是对一些数据进行操作的效用函数。它们在您应用时执行。有几种方法可以应用它们:

  1. 在HTML中:<div ng-repeat="item in items | myFilter>
  2. 在代码中:$filter('myFilter')(arguments_to_the_filter); - 请注意,您需要为此选项注入$ filter服务。
  3. 如果您在控制器执行之前尝试过滤集合,如果这是一个路由,您可以添加一个注入过滤值的resolve函数,或者,您可以在控制器中首先应用过滤器

    正确的工作流程取决于您的应用程序,但通常情况下,您将依赖项注入控制器,而不依赖于在控制器中加载数据。