Wenn ich eine Ansicht lade, möchte ich einen Initialisierungscode in dem zugehörigen Controller ausführen.
Zu diesem Zweck habe ich die ng-init-Direktive für das Hauptelement meiner Ansicht verwendet:
<div ng-init="init()">
blah
</div>
und in der Steuerung:
$scope.init = function () {
if ($routeParams.Id) {
//get an existing object
});
} else {
//create a new object
}
$scope.isSaving = false;
}
Erste Frage: Ist das der richtige Weg?
Als nächstes habe ich ein Problem mit der Abfolge der Ereignisse. In der Ansicht habe ich eine Schaltfläche "Speichern", die die ng-disabledDirektive als solche verwendet:
<button ng-click="save()" ng-disabled="isClean()">Save</button>
Die isClean()Funktion ist in der Steuerung definiert:
$scope.isClean = function () {
return $scope.hasChanges() && !$scope.isSaving;
}
Wie Sie sehen können, wird das $scope.isSavingFlag verwendet, das in der init()Funktion initialisiert wurde .
Problem: Wenn die Ansicht geladen wird, wird die isClean Funktion aufgerufen , bevor die init()Funktion, damit das Flag isSavingist undefined. Was kann ich tun, um das zu verhindern?