我正在使用的应用程序需要我访问paginationChanged函数,只有在我将onregisterapi对象添加到表格中的gridoptions时,我才能使用。我需要访问PaginationChanged函数,以便可以随着打页的增加而更改网格的高度。我知道访问Gridapi的唯一方法是注入$范围,该范围已不再被用于Angular 1.6及以上。现在,我使用的是Angular 1.6,并且在HTML视图上访问网格电视是通过使用UI-Grid = $ ctrl.gridoptions。有谁知道当onregisterapi对象的一部分而不必使用$ scope时,是否知道一种访问Gridapi的方法?
访问gridapi的方法,而无需在gridoptions对象所寿命的控制器或服务中使用$范围,以确保添加以下属性:appscopeprovider:appscopeprovider:它允许您设置我的情况是我的情况,是$ ctrl。和OnRegisterapi:允许您访问Gridapi所需的。参考http://ui-grid.info/docs/#/api/ui.grid.class:Gridoptions
当您使用AppScopRovider重置此对象的名称时,您还将为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){}
我还必须设置您通常将$ scope视为null的位置,因为我不想使用$ scope,因为函数paginationchanged()中的参数。
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');
});
}
}
http://ui-grid.info/docs/#/api/ui.grid.class:Gridapi