Когда я загружаю представление, я хочу запустить некоторый код инициализации в связанном с ним контроллере.
Для этого я использовал директиву 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. Что я могу сделать, чтобы это предотвратить?