2016-08-15 2 views
0

Ich versuche Submit-Taste zu deaktivieren, während einige Async-Aufruf in Bearbeitung ist, aber es sieht aus wie ng-disabled ist nicht auf Wertänderung zu beobachten. Hier ist der Code Beispiel:Ng-deaktiviert reagiert nicht auf Änderungen im Wert

Markup:

<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; 
}; 

Es sieht aus wie $ verdauen nicht nach scope.changeFormProgress = true; aus irgendeinem Grund genannt wird, aber wenn ich versuche, es hinzufügen manuell mit scope.$digest();, habe ich Fehler Error: [$rootScope:inprog] $apply already in progress. Gibt es also eine Möglichkeit, ng-Behinderte in dieser Situation auf Wertänderungen zu achten?

+0

versuchen Nur-Lese-Einstellung – TNC

+0

@TNC sorry, sieht aus wie 'ng-Read-only = "changeFormProgress"' auch nicht – snowfinch27

+0

funktioniert Hmm ich sehe nicht, warum diese shouldn‘ t arbeiten. Könnten Sie dafür einen Plunker einrichten? – Aron

Antwort

0

Sie müssen scope ändern $scope

+0

Je nachdem, wie ' $ scope' wird injiziert, es ist möglicherweise nicht notwendig. Wenn Sie beispielsweise die Array-Syntax verwenden, können Sie '['$ scope', function (scope) {}]' verwenden – Aron

Verwandte Themen