Коли я завантажую подання, я хотів би запустити деякий код ініціалізації у відповідному контролері.
Для цього я використав директиву ng-init для основного елемента мого подання:
<div ng-init="init()">
blah
</div>
а в контролері:
$scope.init = function () {
if ($routeParams.Id) {
//get an existing object
});
} else {
//create a new object
}
$scope.isSaving = false;
}
Перше запитання: чи правильно це зробити?
Наступне, у мене проблема з послідовністю подій, що відбуваються. У поданні у мене є кнопка "Зберегти", яка використовує ng-disabledдирективу як таку:
<button ng-click="save()" ng-disabled="isClean()">Save</button>
isClean()функція визначена в контролері:
$scope.isClean = function () {
return $scope.hasChanges() && !$scope.isSaving;
}
Як бачите, він використовує $scope.isSavingпрапор, який був ініціалізований у init()функції.
ПРОБЛЕМА: коли вид завантажений, isClean функція викликається перед тим в init()функції, отже , прапор isSavingє undefined. Що я можу зробити, щоб запобігти цьому?