让您的控制器中有一个:
$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){
...
}());
作为旁注,您的功能看起来像一个过滤器,因此也许您需要将其转换为角滤波器。