Ao carregar um modo de exibição, gostaria de executar algum código de inicialização em seu controlador associado.
Para fazer isso, usei a diretiva ng-init no elemento principal da minha visão:
<div ng-init="init()">
blah
</div>
e no controlador:
$scope.init = function () {
if ($routeParams.Id) {
//get an existing object
});
} else {
//create a new object
}
$scope.isSaving = false;
}
Primeira pergunta: essa é a maneira certa de fazer isso?
Em seguida, tenho um problema com a sequência de eventos ocorrendo. Na visualização, tenho um botão 'salvar', que usa a ng-disabled
diretiva como tal:
<button ng-click="save()" ng-disabled="isClean()">Save</button>
a isClean()
função é definida no controlador:
$scope.isClean = function () {
return $scope.hasChanges() && !$scope.isSaving;
}
Como você pode ver, ele usa o $scope.isSaving
sinalizador, que foi inicializado na init()
função.
PROBLEMA: quando a visualização é carregada, a função isClean é chamada antes da init()
função, portanto, o sinalizador isSaving
é undefined
. O que posso fazer para evitar isso?