2016-05-15 67 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 [index] [「content」] = clean_value;}); ** – sbaaaang

回答

1

如果你想要綁定一個變量,你不應該使用這樣的輸入。摘要循環將刷新該值,但不會明顯更新,因爲這不是html原生行爲。

使用NG-模型相反,它預期將更新視圖輸入的值:

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

而且採用NG-模型時,用戶修改輸入您的變量將被更新,所以你可以把它恢復到在save_field功能更容易做一些治療,沒有jQuery的:

$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