我正在使用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);
    };

最佳答案

有三个潜在原因:


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

关于angular-ui-grid - 无法读取未定义的属性“选择”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29752727/

10-12 14:29