在2个网格的情况下,UI网格无法获取选定的行(相同的网格重复两次)

时间:2016-06-08 13:49:45

标签: angularjs angular-ui-grid ui-grid

我在同一个html上创建了两个ui网格(两者都相同)。     我点击提交按钮试图获取所选行。我能够为第二个网格获取选定的行,但无法为第一个网格获取它。

我选择了这样的行:

 onRegisterApi: function(gridApi) {
    $scope.gridApi = gridApi;
    $scope.mySelectedRows = $scope.gridApi.selection.getSelectedRows();
    }

Plunker:http://plnkr.co/edit/SgYh9QzjCQDOKMMXATlF?p=info

有没有办法获得两个网格的选定行?

提前致谢。

1 个答案:

答案 0 :(得分:1)

这是因为API在DOM中加载网格时进行注册。由于您有两个具有相同范围的网格,因此当第二个加载时,它的API将成为$ scope.gridApi定义的API。因此,您使用该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));

  }