最佳答案
当我加载一个视图时,我想在它的关联控制器中运行一些初始化代码。
为此,我在视图的主元素上使用了 ng-init 指令:
<div ng-init="init()">
blah
</div>
在控制器中:
$scope.init = function () {
if ($routeParams.Id) {
//get an existing object
});
} else {
//create a new object
}
$scope.isSaving = false;
}
第一个问题,这样做对吗?
接下来,我对事件发生的顺序产生了疑问。在视图中,我有一个‘ save’按钮,它使用了 ng-disabled
指令:
<button ng-click="save()" ng-disabled="isClean()">Save</button>
isClean()
函数在控制器中定义:
$scope.isClean = function () {
return $scope.hasChanges() && !$scope.isSaving;
}
如您所见,它使用了在 init()
函数中初始化的 $scope.isSaving
标志。
问题: 当加载视图时,isClean 函数被称为 之前的 init()
函数,因此标志 isSaving
是 undefined
。我该怎么做才能避免这种情况?