Quando carico una vista, vorrei eseguire del codice di inizializzazione nel controller associato.
Per fare ciò, ho usato la direttiva ng-init sull'elemento principale della mia vista:
<div ng-init="init()">
blah
</div>
e nel controller:
$scope.init = function () {
if ($routeParams.Id) {
//get an existing object
});
} else {
//create a new object
}
$scope.isSaving = false;
}
Prima domanda: è questo il modo giusto per farlo?
La prossima cosa, ho un problema con la sequenza degli eventi che si verificano. Nella vista ho un pulsante 'salva', che utilizza la ng-disableddirettiva come tale:
<button ng-click="save()" ng-disabled="isClean()">Save</button>
la isClean()funzione è definita nel controller:
$scope.isClean = function () {
return $scope.hasChanges() && !$scope.isSaving;
}
Come puoi vedere, utilizza il $scope.isSavingflag, che è stato inizializzato nella init()funzione.
PROBLEMA: quando la vista viene caricata, la funzione isClean viene chiamata prima della init()funzione, quindi il flag isSavingè undefined. Cosa posso fare per impedirlo?