Javascript ng grid shift select错误选择其他行
签出我的plunker: 复制:Javascript ng grid shift select错误选择其他行,javascript,angularjs,ng-grid,Javascript,Angularjs,Ng Grid,签出我的plunker: 复制: 用鼠标左键单击选择第一行 使用ctrl+end滚动到底部行 使用shift+← 点击 应为:在选择“选择我…”之前的行 已观察:将选择其他行 注意:当滚动其他行时,会再次取消选择。我添加了类似的内容,并且效果良好: beforeSelectionChange: function() { var grid = angular.element('.ngGrid'); grid.data('alreadySelectedItems', grid.sco
注意:当滚动其他行时,会再次取消选择。我添加了类似的内容,并且效果良好:
beforeSelectionChange: function() {
var grid = angular.element('.ngGrid');
grid.data('alreadySelectedItems', grid.scope().selectedItems);
return true;
},
afterSelectionChange: function (rowItem) {
if (rowItem.selected === true) {
} else if (rowItem.selected === false) {
} else if (rowItem.length > 0) {
var selectedIds = [],
grid = angular.element('.ngGrid'),
renderedRows = grid.scope().renderedRows,
alreadySelectedItems = grid.data('alreadySelectedItems') || [];
angular.forEach(rowItem, function (row) {
if (row.selected === true) {
selectedIds.push(row.entity.Id);
}
});
angular.forEach(renderedRows, function (row) {
if (selectedIds.indexOf(row.entity.Id) === -1 && alreadySelectedItems.indexOf(row.entity) === -1) {
row.selected = false;
}
});
grid.removeData('alreadySelectedItems');
}
}
Ui网格使用两个索引:一个用于真实列表,另一个用于可视可访问行。这看起来是一种奇怪的行为,滚动在视觉上检查了太多的行,而在实际列表中检查了权限行。Avec一些滚动它更新的视觉检查。您是否尝试在ui网格github上检查问题是否已报告?无法在ui网格上复制它哦抱歉,我误读了,以为您在ui网格上。。。但是你可以试试ui网格,也许?ng grid的github是否说明了这个问题?我也必须支持IE8,所以不能使用ui grid。github上没有提到这个问题。
beforeSelectionChange: function() {
var grid = angular.element('.ngGrid');
grid.data('alreadySelectedItems', grid.scope().selectedItems);
return true;
},
afterSelectionChange: function (rowItem) {
if (rowItem.selected === true) {
} else if (rowItem.selected === false) {
} else if (rowItem.length > 0) {
var selectedIds = [],
grid = angular.element('.ngGrid'),
renderedRows = grid.scope().renderedRows,
alreadySelectedItems = grid.data('alreadySelectedItems') || [];
angular.forEach(rowItem, function (row) {
if (row.selected === true) {
selectedIds.push(row.entity.Id);
}
});
angular.forEach(renderedRows, function (row) {
if (selectedIds.indexOf(row.entity.Id) === -1 && alreadySelectedItems.indexOf(row.entity) === -1) {
row.selected = false;
}
});
grid.removeData('alreadySelectedItems');
}
}