在ng-grid中更新selectedItems数组中的元素

时间:2014-02-27 18:00:06

标签: javascript arrays angularjs ng-grid

我正在获取ng-grid的选定行,并在分隔的数组中显示某些值。 我的问题是,当我更改所选行中的某些值时,我需要更新元素而不是推送一对新值。

$scope.$watch('mySelectedItems', function() {
    $scope.gridOptions.selectedItems.forEach(function(entry) {
        var myEntry = {unit: entry.myUnit, quantity: entry.qty, sku: entry.sku};
        $scope.result1.push(myEntry);
    });
}, true);

注意:mySelectedItems只是一个包含selectedItems[]中相同数据的新数组(ng-grid的默认数组)

我知道它与push()函数有关,但我找不到更新现有值对的方法。 过去有没有人做过类似的事情?

谢谢!

3 个答案:

答案 0 :(得分:0)

检查是否有效

控制器

$ scope.gridOptions = {data:'myData',selectedItems:[]}; HTML

{{gridOptions.selectedItems}}

我发现它here

答案 1 :(得分:0)

我能够通过使用新数组修改watch函数并在其外部添加第二个数组来实现此目的。您可以在js中检查第28到36行中的功能。 :)

答案 2 :(得分:0)

您必须首先获取要更新的项目的位置,然后使用索引器替换它。

$scope.$watch('mySelectedItems', function() {
   $scope.gridOptions.selectedItems.forEach(function(entry) {
      var myEntry = {unit: entry.myUnit, quantity: entry.qty, sku: entry.sku};
      var position = $scope.result1.map(function(item) { return item.sku; }).indexOf(myEntry.sku);
      if(position != -1) $scope.result1[position] = myEntry;
  });
}, true);