Lorsque je charge une vue, j'aimerais exécuter du code d'initialisation dans son contrôleur associé.
Pour ce faire, j'ai utilisé la directive ng-init sur l'élément principal de ma vue:
<div ng-init="init()">
blah
</div>
et dans le contrôleur:
$scope.init = function () {
if ($routeParams.Id) {
//get an existing object
});
} else {
//create a new object
}
$scope.isSaving = false;
}
Première question: est-ce la bonne façon de procéder?
Ensuite, j'ai un problème avec la séquence des événements. Dans la vue, j'ai un bouton `` enregistrer '', qui utilise la ng-disabled
directive en tant que telle:
<button ng-click="save()" ng-disabled="isClean()">Save</button>
la isClean()
fonction est définie dans le contrôleur:
$scope.isClean = function () {
return $scope.hasChanges() && !$scope.isSaving;
}
Comme vous pouvez le voir, il utilise l' $scope.isSaving
indicateur, qui a été initialisé dans la init()
fonction.
PROBLEME: lorsque la vue est chargé, la fonction isClean est appelée avant la init()
fonction, d' où le drapeau isSaving
est undefined
. Que puis-je faire pour éviter cela?