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