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