2016-05-15 21 views
0

私はng-repeatを持っています。次に、ユーザーは前記データを自由に変更することができ、変更はフォームに表示されます。その前に、ユーザが提出したデータはボタン上のng-clickによって呼び出される別の機能によって消毒されます。

すべてはうまく動作します(私は$scope.some_arrayを確認しました。そこからng-repeatがデータを取り込み、新しいデータが正しい場所にあります)が、ページ上で何も起こりません。

要素:

<li ng-repeat="field in some_array" id="field-{{$index}}"> 
      <div class="{{field.field_color}}"> 
       <button type="button" ng-click="save_field($index)">done</button> 
       {{field.nice_name}} 
      </div> 
      <div id="field-input-{{$index}}"> 
       <input type="text" id="{{field.tag}}" value="{{field.content}}"> 
       <label for="{{field.tag}}">{{field.nice_name}}</label> 
      </div> 
    </li> 

save_fieldコード:なるほどコンソールで

$scope.save_field = function (index) { 
     console.log($scope.some_array[index]["content"]) 
     var value = $("#field-" + index).children("div").children("input").val() 
     var name = $scope.some_array[index]["name"] 
     var clean_value = my_clean(value) 
     if (norm_value === "") { 
      return 
     } 
     $scope.some_array[index]["content"] = clean_value 
     console.log($scope.some_array[index]["content"]) 
    } 

10.03.16 
10/03/16 

右ですが、形で私だけ10.03.16を参照してください。私はすでに$timeout(function(){$scope.$apply()})を私の関数の最後の行に入れてみましたが、出力は同じです。

+0

はすべてそのjQueryと使用角度の方法論を取り除きます。データを入力フィールドにバインドするには 'ng-model'を使います。 – charlietfl

+0

try ** $ scope。$ evalAsync(function(){$ scope.some_array [" content "] = clean_value;}); ** – sbaaaang

答えて

1

変数を変数にバインドする場合は、このような入力を使用しないでください。ダイジェストループは値をリフレッシュしますが、HTMLのネイティブな動作ではないため、目に見える形で更新されることはありません。

使用NG-モデル予想通りの代わりに、それは入力の表示値を更新しますが:

<input type="text" id="{{field.tag}}" ng-model="field.content"> 

はまた、ユーザが入力を変更するとき、あなたがそれを取得することができますので、あなたの変数は、更新されますngのモデルを使用してjQueryのなしで、save_field機能にはるかに簡単にいくつかの治療を行います。

$scope.save_field = function (index) { 
    if (norm_value === "") { 
     return; 
    } 
    $scope.some_array[index]["content"] = my_clean($scope.some_array[index]["content"]); 
}; 

もっとに関する情報:https://docs.angularjs.org/api/ng/directive/ngModel

関連する問題