Я пытаюсь отключить кнопку отправки, пока выполняется какой-либо асинхронный вызов, но похоже, что ng-disabled
не отслеживает изменение стоимости. Вот пример кода:Ng-disabled не реагирует на изменения в значении
наценки:
<button ng-show="!resetSuccess" class="form-input login-button" ng-disabled="changeFormError || changeFormProgress", ng-click="resetPassword(changeForm)">Send Email</button>
JS:
scope.resetPassword = function (form) {
if (form.$valid) {
scope.changeFormProgress = true; // value is changed, but ng-disable doesn't react on it
// scope.$digest(); produces an error
someAsyncCallReturningPromise.then(function() {
scope.changeFormProgress = false;
scope.changeForm.$setPristine();
}, function (err) {
scope.changeFormProgress = false;
scope.changeFormError = true; // changeFormError works ok, ng-disabled watches it
});
scope.changeFormError = true;
};
Похоже $ дайджеста не вызывается после scope.changeFormProgress = true;
по какой-то причине, но если я пытаюсь добавить его вручную с scope.$digest();
, я получил ошибку Error: [$rootScope:inprog] $apply already in progress
. Итак, есть ли способ сделать ng-disabled часы для изменения ценности в этой ситуации?
попробуйте установить только для чтения – TNC
@TNC извините, выглядит как 'нг-только для чтения =«changeFormProgress»' не работает слишком – snowfinch27
Хм, я не понимаю, почему это не должен» т работы. Не могли бы вы настроить Plunker для этого? – Aron