angularjs - 将 angularCompileRows 设置为 true 时,无法读取 null 的属性 '$apply'

标签 angularjs ag-grid

我使用 AngularJS 1.7 和 ag-grid 18.0.1。

当我将 angularCompileRows 设置为 true 时,控制台中出现此错误:

Uncaught TypeError: Cannot read property '$apply' of null
at eval (rowRenderer.js:586)

这是对应的代码(这是agGrid代码):
RowRenderer.prototype.checkAngularCompile = function () {
    var _this = this;
    // if we are doing angular compiling, then do digest the scope here
    if (this.gridOptionsWrapper.isAngularCompileRows()) {
        // we do it in a timeout, in case we are already in an apply
        setTimeout(function () {
            _this.$scope.$apply();
        }, 0);
    }
};

这是我的选择:
const gridOptions = {
            rowData: null,
            columnDefs: [...],
            enableColResize: true,
            onColumnResized: (params) => {
            angularCompileRows: true,
            suppressCellSelection: true,
            enableSorting: true,
            enableServerSideSorting: true,
            rowModelType: 'infinite',
            pagination: true,
            paginationPageSize: 10,
            unSortIcon: true,
            suppressPaginationPanel: true,
            suppressHorizontalScroll: true,
            onGridReady: (params) => {
                const dataSource = {
                    rowCount: null, // behave as infinite scroll
                    getRows: (rowsParams) => {
                        // call my API then rowsParams.successCallback(data, isLastPage);
                    },
                };

                gridOptions.api.setDatasource(dataSource);
            },
        };

调用栈

enter image description here

以及调试选项的输出

enter image description here

网格正在呈现:标题没问题,但内容为空。

普朗克 https://plnkr.co/edit/j5ubZWit4CO5zmldgqnl?p=preview基于这个例子 https://www.ag-grid.com/javascript-grid-infinite-scrolling/#example-2-equal-pagination-page-size-and-large-infinite-block-si并添加 angularCompileRows: true选项

编辑:这是一个带有 Angular 应用程序的 plunker https://plnkr.co/edit/7eOKSXbcCzLdYWtPygrS?p=preview

错误没有被触发,但 angularCompileRows 似乎没有被调用

最佳答案

如果您打算在网格中使用 angular,为什么不先加载 angular :)。您没有加载 angular,也没有在网格中使用任何 angular 代码,如何调用 $scope.$apply()没有那个?

制作 angularCompileRows = false和你的网格工作。如果您要使用 angular,请从 angular 示例开始。

关于angularjs - 将 angularCompileRows 设置为 true 时,无法读取 null 的属性 '$apply',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51039643/

相关文章:

javascript - 如何从 AgEditorComponent 的上下文中聚焦 ag-grid Angular 中的下一个单元格

angular - ag-grid 单元格编辑器 - 如何将数据保存到后端

javascript - 如何在 Angular 2 中对指令进行单元测试?

javascript - 可以直接将元素放入ng-view中吗?

javascript - AG-Grid 在导出到 CSV 时跳过列

angular - Angular 2 中未定义的 ag-grid gridOptions.api

javascript - 农业网格企业与 react

javascript - 如何使用 AngularJS 设置输入框以清除焦点上的默认值

javascript - 什么是 ng-hide-add、ng-hide-active

javascript - myfunction() 函数在 angularjs 中从一个 Controller 调用到另一个 Controller