如何在agGrid-angularJs中的ngClick上获取getSelectedRows?

时间:2019-04-08 14:34:08

标签: angularjs ag-grid-angular

在ngClick上调用gridOptions.api.getSelectedRows()会返回[],但是在gridOptions.onRowClicked中调用会正确返回所选的rowData。为什么api.getSelectedRows()在ngClick上返回空?如何在ngClick上获取选定的行?

我正在尝试在我的angularJs项目中使用agGrid。当单击附加到特定行的编辑按钮时,我需要将选定的行作为表单输入以进行编辑/更新。

这是我用来调用updateRecord的代码,然后尝试调用getSelectedRows(但失败了)。

gridOptions.rowData = genRows(opa.fieldParams, opa.values, function (row) {
  row.verticalTailer = `<i class="far fa-edit" style="cursor: pointer;"
  ng-click="$root.$broadcast('table:updateRecord', {name: '${opa.name}'})">
  </i>`;
});

enter image description here

2 个答案:

答案 0 :(得分:0)

您可以使用ag-grid api并使用它。他们提供了内置功能,可以从网格中获取选定的行。

要实现这一点,首先,您必须在范围内注册ag-grid的api。

 $scope.gridOptions.onRegisterApi = function(gridApi){
      $scope.gridApi = gridApi;
    }; 

然后您可以在ngClick上使用$ scope.gridApi,如下所示,其中getSelectedRows()将在ngClick上调用。

$scope.getSelectedRows= function(){
    $scope.selectedRows= $scope.gridApi.selection.getSelectedRows();
}

答案 1 :(得分:0)

我深入研究了ag-grid文档中的ag-grid angularjs示例conde,发现我可以简单地使用data(由ag-grid静默添加到范围)来引用当前行。模板,因此我只需在模板代码中将ng-click="$root.$broadcast('table:updateRecord', {name: '${opa.name}'}更改为ng-click="$root.$broadcast('table:updateRecord', {name: '${opa.name}', data: data},而无需在控制器中使用getSelectedRows()。