在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>`;
});
答案 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()。