2013-12-17 17 views
16

Wie ändere ich den Text auf einem Senden-Knopf beim Speichern von Daten in einem Formular?Ändern von Text auf der Schaltfläche beim Speichern mit angularjs

Ich habe eine Schaltfläche wie dieses

<button ng-click="save()">Save data</button> 

und ich meine save-Funktion aktualisiert auf der Grundlage der Antworten unter:

$scope.ButtonText = "Save day"; 
    $scope.save=function(){ 
     $scope.ButtonText = "Saving day"; 
     for(var i=0;i<days.length;i++) 
     { 
      MyService.saveday() 
      .success(function(data, status, headers, config) { 
      }) 
      .error(function(data, status, headers, config) { 
      }); 
     } 
     $scope.ButtonText = "Save day"; 
    }; 

Während die Daten zu speichern, würde Ich mag den Text ändern " Daten speichern "in" Daten speichern "und zurück zu" Daten speichern ", wenn die Daten gespeichert wurden.

UPDATE

Ich habe

$scope.ButtonText = "Save day"; 

auf der Grundlage der Antworten unten, aber klar, dass meine Bedürfnisse komplexer sind, da ich einen asynchronen Dienst mehrere Male nenne. Ich denke also, die Frage ist, wie ich den Text beim asynchronen Aufruf des Dienstes setzen kann und ihn erst wieder auf den ursprünglichen Text zurückstellen kann, nachdem alle Aufrufe an den Dienst beendet sind.

dank

Thomas

Antwort

29

Sie können den Button Text im Rahmen, setzen und dann den Umfang Wert aktualisieren beim Speichern:

<button ng-click="save()">{{button}}</button> 

und in Ihrer Funktion:

$scope.button = "Save data"; 

$scope.save=function(){ 
    $scope.button = "Saving day"; 
    for(var i=0;i<days.length;i++) 
    { 
     MyService.saveday() 
     .success(function(data, status, headers, config) { 
     }) 
     .error(function(data, status, headers, config) { 
     }).then(function() { 
      if (i===days.length) { // is the last iteration 
       $scope.button = "Save day"; 
      } 
     }); 
    } 

}; 
+0

danke. Es funktionierte, aber ich erkannte, dass meine Bedürfnisse etwas komplizierter waren. Ich habe die Frage aktualisiert, um diese – ThomasD

+0

widerzuspiegeln Ich aktualisierte meine Antwort, ein Versprechen mit dann verwendend (vorausgesetzt, Ihr Dienst ist ein http Service-Alias), wo bei der letzten Iteration der '$ scope.ButtonText' zu dem ursprünglichen" Save day "aktualisiert wird ". –

5

Es gibt mindestens ein paar Möglichkeiten.

Eine der Möglichkeiten besteht darin, eine andere Eigenschaft in einem Bereich zu erstellen, die den Text der Schaltfläche enthält.

Anstatt HTML-Button-Text dann hardcodieren binden Sie es an eine neue Bereichseigenschaft.

<button ng-click="save()">{{buttonText}}</button> 
+0

danke. Es funktionierte, aber ich erkannte, dass meine Bedürfnisse etwas komplizierter waren. Ich habe die Frage aktualisiert, um dies zu berücksichtigen – ThomasD

Verwandte Themen