ui-grid api undefined after return from another controller

ui-grid api undefined after return from another controller

请通过plunker

 vm.gridOptions = {
        enableSorting: true,
        columnDefs: [
            {field: 'deviceName'},
            {field: 'ip'},
            {
                field: 'Action', enableSorting: false,
                cellTemplate: '/monitoring_page/modals/buttonTemplate.html'
            }
        ],
        data: vm.dataStack,
        onRegisterApi: function (gridApi) {
            vm.gridApiSource = gridApi;
        }
    };
 //api call after coming from ui-bootstrap modal
  vm.gridApiSource.core.refresh();

http://plnkr.co/edit/Oxo8XdQCysOUvfvhD82z?p=preview

在控制台中,gridApiSoucrce 未定义。 . .

Figured it out of after a bit of work - Click for Plnkr:

  1. appScopeProvider: vm 添加到您的网格选项
  2. 将您的网格重新声明为 <div ui-grid="vm.gridOptions" ui-grid-pagination ui-grid-save-state class="cover-block"></div>
  3. 将您的 body 声明更改为 <body ng-controller="monitoringCtrl as vm"> 并更新所有调用以使用 vm。

    Example:  ng-click="monitoringCtrl.addDevice()" 
    

    现在应该是:

    ng-click="vm.addDevice()"
    
  4. 从 button.html 中删除 ng-controller="monitoringCtrl as monitoringCtrl,由于该行代码,它正在创建 8 个控制器实例。

  5. 测试一下

如果这对您有用,请接受它以供将来的用户复制。