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