我正在获取 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()
函数有关,但我找不到更新现有值对的方法。过去有人做过类似的事情吗?
谢谢!
检查这是否有效
控制器
$scope.gridOptions = { data: 'myData', selectedItems: [] };.HTML
{{gridOptions.selectedItems}}
我在这里找到了它。
我能够通过使用新数组修改监视函数并在它之外添加第二个数组来实现这一点。您可以在 js 的第 28 到 36 行中检查函数。:)
必须首先获取要更新的项的位置,然后使用索引器替换它。
$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);