UI 在 2 个网格的情况下,网格无法获取选定的行(相同的网格重复两次)
UI grid unable to get selected rows in case of 2 grids(same grid repeated twice)
我在同一个 html 上创建了两个 ui 网格(两者相同)。
我试图通过单击提交按钮来获取选定的行。我能够为第二个网格获取选定的行,但无法为第一个网格获取它。
我正在这样选择行:
onRegisterApi: function(gridApi) {
$scope.gridApi = gridApi;
$scope.mySelectedRows = $scope.gridApi.selection.getSelectedRows();
}
笨蛋:http://plnkr.co/edit/SgYh9QzjCQDOKMMXATlF?p=info
有什么方法可以获取两个网格的选定行吗?
提前致谢。
这是因为 API 在网格加载到 DOM 时注册。由于您有两个具有相同范围的网格,当第二个加载时,它的 API 变成 $scope.gridApi 定义的内容。因此,您对 API 所做的任何操作都会与第二个网格实例进行交互。
这里的解决方案是将网格分开,可能是 $scope.gridOptions1,$scope.gridOptions2。对于两者都必须发生的任何事情,您可以在函数内独立调用每个 API。
这就是我要做的:
http://plnkr.co/edit/nLLR63L4H4NqLoZsGpkS?p=preview
对于您的提交函数,假设您需要一个包含结果的数组,我已经更新了该函数以使其提供一个结果:
$scope.submitData = function() {
var selectedRows1 = $scope.gridApi1.selection.getSelectedRows(),
selectedRows2 = $scope.gridApi2.selection.getSelectedRows(),
selectedRows = selectedRows1.concat(selectedRows2);
console.warn(selectedRows);
alert(selectedRows.length)
if (selectedRows.length === 0)
alert('Please select an item from grid');
else
alert(JSON.stringify(selectedRows));
}
我在同一个 html 上创建了两个 ui 网格(两者相同)。 我试图通过单击提交按钮来获取选定的行。我能够为第二个网格获取选定的行,但无法为第一个网格获取它。
我正在这样选择行:
onRegisterApi: function(gridApi) {
$scope.gridApi = gridApi;
$scope.mySelectedRows = $scope.gridApi.selection.getSelectedRows();
}
笨蛋:http://plnkr.co/edit/SgYh9QzjCQDOKMMXATlF?p=info
有什么方法可以获取两个网格的选定行吗?
提前致谢。
这是因为 API 在网格加载到 DOM 时注册。由于您有两个具有相同范围的网格,当第二个加载时,它的 API 变成 $scope.gridApi 定义的内容。因此,您对 API 所做的任何操作都会与第二个网格实例进行交互。
这里的解决方案是将网格分开,可能是 $scope.gridOptions1,$scope.gridOptions2。对于两者都必须发生的任何事情,您可以在函数内独立调用每个 API。
这就是我要做的: http://plnkr.co/edit/nLLR63L4H4NqLoZsGpkS?p=preview
对于您的提交函数,假设您需要一个包含结果的数组,我已经更新了该函数以使其提供一个结果:
$scope.submitData = function() {
var selectedRows1 = $scope.gridApi1.selection.getSelectedRows(),
selectedRows2 = $scope.gridApi2.selection.getSelectedRows(),
selectedRows = selectedRows1.concat(selectedRows2);
console.warn(selectedRows);
alert(selectedRows.length)
if (selectedRows.length === 0)
alert('Please select an item from grid');
else
alert(JSON.stringify(selectedRows));
}