Ng-Grid:无法读取' on'为null

时间:2014-07-31 12:20:49

标签: javascript angularjs angularjs-directive ng-grid

我正在开发一个angular.js指令,它只是一个带有网格的JQuery对话框。

指令模板:

<div class="datasetsGrid" ng-grid="gridOptions"></div>

问题

当我单击一个按钮(“View Grid”)并在关闭对话框时销毁该指令时,将编译并打开该指令。

如果我打开,关闭然后重新打开对话框,我会发现以下错误:

TypeError: Cannot read property 'on' of null
    at self.assignEvents (https://127.0.0.1/Scripts/Libraries/Angular/ng-grid-2.0.11.js:1003:29)
    at Object.fn (https://127.0.0.1/Scripts/Libraries/Angular/ng-grid-2.0.11.js:3260:52)
    at Scope.$digest (https://127.0.0.1/Scripts/Libraries/Angular/angular.js:12251:29)
    at Scope.$apply (https://127.0.0.1/Scripts/Libraries/Angular/angular.js:12516:24)
    at done (https://127.0.0.1/Scripts/Libraries/Angular/angular.js:8204:45)
    at completeRequest (https://127.0.0.1/Scripts/Libraries/Angular/angular.js:8412:7)
    at XMLHttpRequest.xhr.onreadystatechange (https://127.0.0.1/Scripts/Libraries/Angular/angular.js:8351:11) 

ng-grid-2.0.11.debug.js 中的以下代码部分有关:

        grid.$groupPanel.on('mousedown', self.onGroupMouseDown).on('dragover', self.dragOver).on('drop', self.onGroupDrop);
        grid.$topPanel.on('mousedown', '.ngHeaderScroller', self.onHeaderMouseDown).on('dragover', '.ngHeaderScroller', self.dragOver);

        grid.$groupPanel.on('$destroy', function() {
            if (grid.$groupPanel){
                grid.$groupPanel.off('mousedown');
            }

            grid.$groupPanel = null;
        });

        if (grid.config.enableColumnReordering) {
            grid.$topPanel.on('drop', '.ngHeaderScroller', self.onHeaderDrop);
        }

        grid.$topPanel.on('$destroy', function() {
            if (grid.$topPanel){
                grid.$topPanel.off('mousedown');
            }

            if (grid.config.enableColumnReordering && grid.$topPanel) {
                grid.$topPanel.off('drop');
            }

            grid.$topPanel = null;
        });

这可以在 ng-grid-2.0.11.debug.js 文件的第997行找到。

在我看来,在 ng-grid-2.0.11.debug.js第997行中,它尝试将事件添加到空对象grid.$groupPanel的代码。此对象为null因为当我关闭对话框时我将其销毁,当我重新打开(并重置所有内容)时,它最终显示,但此错误显示在开发人员工具中。

团队小组(我已启用仍然有效)值得一无所知

我知道如何通过编辑 ng-grid-2.0.11.debug.js 文件解决这个问题,但我不想这样做,因为我喜欢保持它 - 到目前为止,我想我一定是做错了。

以前有人遇到过这个问题吗?如果是这样,你是如何解决它的?

1 个答案:

答案 0 :(得分:2)

已在ng-grid-2.0.14.debug.js中修复

Here

下载最新版本