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