2013-12-17 10 views
16

フォームにデータを保存している間に、送信ボタンのテキストを変更するにはどうすればよいですか?angularjsを使用して保存中にボタン上のテキストを変更する

私はこの

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

のようなボタンを持っていると私は以下の回答に基づいて、私の保存機能更新:データを保存しながら

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

を、私は "からテキストを変更したいですデータを保存する "に"データを保存 "し、データが保存されると"データを保存 "に戻ります。

UPDATE

私は以下の回答に基づいて

$scope.ButtonText = "Save day"; 

を追加しましたが、私は非同期サービスを複数回呼び出していますので、私のニーズは、より複雑であることに気づきました。だから私は、サービスが非同期的に呼び出されている間にテキストを設定して、サービスへのすべての呼び出しが実行を終了した後に元のテキストに戻すしかないのかと疑問に思う。

おかげ

トーマス

答えて

29

あなたはスコープのボタンのテキストを公開して、節約しながら、スコープ値を更新することができます。

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

とあなたの関数で:

$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

感謝。それは働いていましたが、私のニーズはもう少し複雑になっていました。私はこれを反映するために質問を更新しました – ThomasD

+0

私は自分の答えを更新しました。約束を使って(あなたのサービスはhttpサービスエイリアスと仮定します)、最後の反復で '$ scope.ButtonText'が元の" Save day "ありがとう。 –

5

少なくともいくつかの方法があります。

方法の1つは、ボタンのテキストを保持するスコープに別のプロパティを作成することです。その後

$scope.buttonText = 'Save'; 
$scope.save = function() { 
    $scope.buttonText = 'Saving...'; 
}; 

の代わりに、HTMLでボタンテキストをハードコーディングするには、新しいスコープのプロパティにバインドします。

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

ありがとう。それは働いていましたが、私のニーズはもう少し複雑になっていました。私はこれを反映するために質問を更新しました – ThomasD

関連する問題