当我加载视图时,我想在其关联的控制器中运行一些初始化代码。
为此,我在视图的主要元素上使用了 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;
}
第一个问题:这是正确的做法吗?
接下来,我对发生的事件顺序有疑问。在视图中,我有一个“保存”按钮,它使用如下ng-disabled
指令:
<button ng-click="save()" ng-disabled="isClean()">Save</button>
该isClean()
功能在控制器中定义:
$scope.isClean = function () {
return $scope.hasChanges() && !$scope.isSaving;
}
如您所见,它使用了$scope.isSaving
在函数中初始化的标志init()
。
问题:加载视图时,isClean 函数在函数之前init()
调用,因此标志isSaving
为undefined
. 我能做些什么来防止这种情况发生?