假设我们有一个控制器:ProjectsNewCtrl
有什么区别:
在没有init()函数的情况下设置控制器
App.controller('ProjectsNewCtrl', ['$scope', '$location', 'API'
function ($scope, $location, API) {
API.Project.query().$promise
.then(function (projects) {
$scope.projects = projects
})
}])
和
使用init()函数设置控制器
App.controller('ProjectsNewCtrl', ['$scope', '$location', 'API'
function ($scope, $location, API) {
$scope.init = function(){
API.Project.query().$promise
.then(function (projects) {
$scope.projects = projects
})
}
$scope.init()
}])
最后:
通过以下方式设置控制器:
<div ng-controller="projectsNewCtrl" ng-init="init()">...</div>
App.controller('ProjectsNewCtrl', ['$scope', '$location', 'API'
function ($scope, $location, API) {
$scope.init = function(){
API.Project.query().$promise
.then(function (projects) {
$scope.projects = projects
})
}
}])
最佳答案 您没有真正想要以这种方式使用ngInit的原因.在第二个示例中,您正在调用函数(ngInit)来调用函数($scope.init),而不是第一个只在初始化时调用一个函数的示例.逻辑可能相同,但它增加了不必要的复杂性.
顺便说一句,你应该尽量少尝试使用ngInit,来自documentation:
The only appropriate use of ngInit is for aliasing special properties of ngRepeat, as seen in the demo below. Besides this case, you should use controllers rather than ngInit to initialize values on a scope.