我正在开发的应用程序要求我访问 paginationChanged 函数,该函数仅在我将 onRegisterApi 对象添加到表中的 gridOptions 时才可用。我需要访问 paginationChanged 函数,以便在 PageSize 增加时更改网格的高度。我知道访问 gridApi 的唯一方法是注入 $scope ,自 Angular 1.6 及更高版本以来不再使用它。现在我正在使用 Angular 1.6 并通过使用 ui-grid= $ctrl.gridOptions 来访问 html 视图上的 gridOptions。有谁知道当 onRegisterApi 对象的一部分时无需使用 $scope 就可以访问 gridApi 的方法?
2671 次
2 回答
1
在您的 gridOptions 对象所在的控制器或服务中不使用 $scope 访问 gridApi 的方法是确保添加以下属性: appScopeProvider: 它允许您设置此对象的名称,我的情况是$控制。和 onRegisterApi: 这是允许您访问 gridApi 所必需的。参考http://ui-grid.info/docs/#/api/ui.grid.class:GridOptions
当您使用 appScopeProvider 重置您的 this 对象的名称时,您也在设置 gridApi 的名称。因此,无需使用 $ctrl.gridapi ,您只需要单独使用 $ctrl 即可。所以在我的情况下,解决方案如下:
var OverViewTable = function ($ctrl) {
var gridOptions = {
enableSorting: true,
enablePagination: true,
enablePaginationControls: true,
paginationPageSizes: [50, 100, 200],
paginationPageSize: 50,
rowHeight: 60,
appScopeProvider:$ctrl,
onRegisterApi: function ($ctrl){
$ctrl.pagination.on.paginationChanged(null, function(newPage,
pageSize){}
我还必须在函数 paginationChanged() 中将通常看到 $scope 的位置设置为 null 作为参数,因为我不想使用 $scope。
于 2017-10-02T17:37:33.367 回答
0
gridApi 对象不会自动添加到您的 $ctrl 中。如果你想要它,你必须自己附上它。
以下是通过 onRegisterApi 回调访问 gridApi 的方法:
$ctrl.gridOptions = {
onRegisterApi = function(gridApi){
//Save a reference to the gridApi for later
$ctrl.gridApi = gridApi;
//Attach your event handlers
gridApi.cellNav.on.navigate($scope,function(newRowCol, oldRowCol){
$log.log('navigation event');
});
}
}
于 2017-09-29T17:14:47.523 回答