一部の非同期呼び出し中に送信ボタンを無効にしようとしていますが、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
が表示されます。だから、このような状況で、価値の変化を監視するための方法はありますか?
$scope
にすると設定してみてください変更する必要があります読み取り専用 – TNC@TNCは申し訳ありませんが、あまりにも – snowfinch27
動作しないNG-読み取り専用=「changeFormProgress」 ''のようなうーん、私は見ていないように見えるなぜこのshouldn」仕事。これのためにプランカを設定できますか? – Aron