Lorsque je charge une vue, j'aimerais exécuter un code d'initialisation dans le contrôleur qui lui est 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 qui se déroulent. Dans la vue, j'ai un bouton "Enregistrer", qui utilise l'attribut ng-disabled
en tant que telle :
<button ng-click="save()" ng-disabled="isClean()">Save</button>
le site isClean()
est définie dans le contrôleur :
$scope.isClean = function () {
return $scope.hasChanges() && !$scope.isSaving;
}
Comme vous pouvez le voir, il utilise le $scope.isSaving
qui a été initialisé dans le fichier init()
fonction.
PROBLÈME : lorsque la vue est chargée, la fonction isClean est appelée. antes de le site init()
d'où l'indicateur isSaving
es undefined
. Que puis-je faire pour éviter cela ?