加载视图时,其关联的控制器也会加载。无需使用
ng-init,只需
init()在控制器中调用您的方法即可:
$scope.init = function () { if ($routeParams.Id) { //get an existing object } else { //create a new object } $scope.isSaving = false;}...$scope.init();由于您的控制器之前运行
ng-init,这也解决了您的第二个问题。
jsfiddle
正如
John David Five所提到的,你可能不希望这种重视
$scope,为了使这个方法私有。
var init = function () { // do something}...init();jsFiddle
如果要等待预先设置某些数据,则将该数据请求移至解决方案,或将监视程序添加到该集合或对象,并在数据满足初始化条件时调用init方法。通常,一旦满足我的数据要求,我就会删除观察者,因此,如果您观察的数据发生更改并且符合运行init方法的条件,则init函数不会随机重新运行。
var init = function () { // do something}...var unwatch = scope.$watch('myCollecitonOrObject', function(newVal, oldVal){ if( newVal && newVal.length > 0) { unwatch(); init(); } });


