如何使用$范围访问UI-Grid中的Gridapi



我正在使用的应用程序需要我访问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

相关内容

  • 没有找到相关文章

最新更新