angular-ui-grid gridApi在尝试保存状态时未定义

时间:2015-06-17 15:12:40

标签: angular-ui-grid

我使用Angular ui-grid并尝试保存网格状态时出错。 gridApi似乎未定义。 我创建了Plunker来演示错误。您可以在vm.saveState函数下的View2Controller.js中找到该语句。

angular.module('app').controller('View2Controller').$inject = ['$scope', '$http', 'uigridconstants'];

angular.module('app').controller('View2Controller', function ($scope, $http, uiGridConstants) {
var vm = this;

vm.customers = [];
vm.selectedText = '';
vm.selectedItems = [];
vm.gridOptions = {
    onRegisterApi: function (gridApi) {
        $scope.gridApi = gridApi;
    },        
    data: 'vm.customers',
    columnDefs: [
      {
          field: 'status', name: '', width: 50, sort: {
              direction: uiGridConstants.DESC,
              priority: 0
          }
      },
      {
          field: 'member', name: 'M', width: 50, type: 'boolean',
          cellTemplate: '<input type="checkbox" ng-model="row.entity.lid" >'
      },
      {
          field: 'company', name: 'Company', width: 200, minWidth: 200, maxWidth: 600
      }
    ]
};
$http.get('customers.json')
.success(function (data) {
    vm.customers = data;
});

vm.saveState = function(){
  //debugger;
  var stateToSave = $scope.gridApi.saveState.save();
  console.log(stateToSave);
};
});

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

代码有几个问题。一个是控制器View2Controller的两个实例。

其次你需要使用&#39; ui.grid.saveState&#39;应用中的模块以获取保存状态功能。

<div>
    <div ui-grid="vm.gridOptions" ui-grid-save-state class="myGrid"></div>
</div>


var app = angular.module('app', [
    'ui.router',
    'ui.grid',
    'ui.grid.saveState'
]);

看看这里的plnkr

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