뷰를로드 할 때 연결된 컨트롤러에서 일부 초기화 코드를 실행하고 싶습니다.
이를 위해 뷰의 주요 요소에 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
. 이를 방지하려면 어떻게해야합니까?