我正在获取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()
函数有关,但我找不到更新现有值对的方法。
过去有没有人做过类似的事情?
谢谢!
答案 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);