ビューをロードするときに、関連するコントローラーで初期化コードを実行したいと考えています。
そのために、ビューのメイン要素で 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
です。それを防ぐにはどうすればよいですか?