2016-08-15 6 views
0

一部の非同期呼び出し中に送信ボタンを無効にしようとしていますが、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が表示されます。だから、このような状況で、価値の変化を監視するための方法はありますか?

+0

$scopeにすると設定してみてください変更する必要があります読み取り専用 – TNC

+0

@TNCは申し訳ありませんが、あまりにも – snowfinch27

+0

動作しないNG-読み取り専用=「changeFormProgress」 ''のようなうーん、私は見ていないように見えるなぜこのshouldn」仕事。これのためにプランカを設定できますか? – Aron

答えて

0

あなたはscope

+0

' $ scope'が注入されていれば、必要ではないかもしれません。例えば、配列の構文を使うときには、 '['$ scope'、function(scope){}]' – Aron

関連する問題