无法读取未定义的属性"选择"

Cha*_*les 13 angular-ui-grid

我正在使用ui-grid.但我无法从下载功能获得$ scope.gridApi.并得到错误:无法读取未定义的属性"选择".有人可以告诉我原因吗?谢谢.

    $scope.gridOptions.onRegisterApi = function (gridApi) {
        $log.info('gridApi...');
        $scope.gridApi = gridApi;
        $log.info($scope.gridApi);
    };
    $scope.download = function ($event) {
        $event.stopPropagation();
        var selectedRows = $scope.gridApi.selection.getSelectedRows();
        $log.log('selectedRows....');
        $log.log(selectedRows);
    };
Run Code Online (Sandbox Code Playgroud)

Pau*_*ulL 8

有三个可能的原因:

  • 首先,不包括选择正确,要么不包括js代码中的模块作为依赖项,要么不在html中包含网格定义的指令.这将导致gridApi,但没有gridApi.selection
  • 其次,尝试在onRegisterApi之前调用此方法,或者在onRegisterApi已经触发后在gridOptions上定义onRegisterApi.这将导致该方法未被调用,因此$ scope.gridApi未定义,从您的错误文本听起来就像问题所在.
  • 最后,您的调用问题意味着下载调用的$ scope与您放置gridApi的$ scope不同.这不应该真的发生,但我想它可以.您可以通过在方法中放置一个断点来查看它具有的范围.


F.I*_*gor 6

我检查后解决了这个问题:

  • ui-grid css 加载 ( ui-grid.min.css)
  • ui-grid javascript 库已加载 ( ui-grid.min.js)
  • 'ui.grid''ui.grid.selection'添加到模块初始化 app = angular.module('app',['ui.grid','ui.grid.selection'])` )
  • 将 ui-grid-selection 指令添加到 ui-grid 标记
    <div id="my-grid" ui-grid="gridOptions" ui-grid-selection ></div>

  • 我没有在 app.js 中包含 ui.grid.selection 或添加 ui-grid-selection 指令。添加这些项目解决了我的问题。 (2认同)