加载视图时,我想在其关联的控制器中运行一些初始化代码。
为此,我在视图的主要元素上使用了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
。我该怎么做才能防止这种情况?