在控制器Angular JS的开头运行功能



让您的控制器中有一个:

$scope.filterProductsByCategory = function(category){
...
}

每次加载控制器时,我都想运行此操作。

但是,如果我喜欢这样:

$scope.filterProductsByCategory(category) 
$scope.filterProductsByCategory = function(category){
...
}

我得到:

TypeError: Object #<Scope> has no method 'filterProductsByCategory'

有什么想法?

JavaScript解释器仅知道其读取的功能。因此,如果您翻转函数的定义(定义后调用)应该很好:

$scope.filterProductsByCategory = function(category){
...
}
$scope.filterProductsByCategory(category)

但是,我发现ng-init是在控制器中表达某些东西会在初始化时运行的更好方法:

html:

<div ng-init="init()"></div>

JS:

$scope.init = function() {
   $scope.filterProductsByCategory(category)
}
//define functions
$scope.filterProductsByCategory = function(category){
...
}

在您的情况下因此,首先分配,然后使用它。

另一方面,如果仅在控制器内部使用该功能,我建议您不要将其放入范围。

您可以做这样的事情:

(function(category){
...
}());

作为旁注,您的功能看起来像一个过滤器,因此也许您需要将其转换为角滤波器。

最新更新