Javascript 从包含ng grid对象的状态转换不起作用

Javascript 从包含ng grid对象的状态转换不起作用,javascript,angularjs,ng-grid,angular-ui-router,Javascript,Angularjs,Ng Grid,Angular Ui Router,在我的AngularJS应用程序中,我使用ui路由器进行导航,使用ng网格显示数据。在我从包含网格的状态过渡到任何其他状态之前,一切都正常。这是相应的模板: <div ng-controller="MainUserController" class="container-fluid"> <div class="row"> <div class="col-xs-3"> <div class="gridStyl

在我的AngularJS应用程序中,我使用ui路由器进行导航,使用ng网格显示数据。在我从包含网格的状态过渡到任何其他状态之前,一切都正常。这是相应的模板:

<div ng-controller="MainUserController" class="container-fluid">
    <div class="row">
        <div class="col-xs-3">
            <div class="gridStyle" ng-grid="gridOptions"></div>
        </div>
    </div>
</div>

在ui路由器依赖项之前,我解决了在index.html依赖项中更改jQuery依赖项顺序的问题。

关于ng grid和ui路由器的冲突,这个错误存在漏洞,似乎找到了修复方法,我还没有测试它

build/ng-grid.js中的第952行:

   grid.$topPanel.on('$destroy', function() {
           if(grid.$topPanel == null) // FIX ui-router
            return;

                grid.$topPanel.off('mousedown');

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

                grid.$topPanel = null;
            });

我还发现我需要更改以下内容(参见Alex Choroshin帖子)


仅比建议的修复程序高出几行。

您是否尝试过使用其他版本的ng grid?,请尝试最新版本://cdnjs.cloudflare.com/ajax/libs/ng-grid/2.0.8/ng-grid.debug.js谢谢您的快速回复,Alex Choroshin。这是一个很好的观点,但不幸的是错误仍然存在。堆栈跟踪中引用的UI路由器中的部分代码负责删除DOM元素,ng grid似乎不喜欢这些元素。这有点像是在黑暗中拍摄的,但是试着用一个按钮在更高的范围内制作一个控制器,该按钮可以执行
angular.element(“[ng controller=MainUserController]”)。remove()
,并查看是否会触发相同的错误。另外,
gridOptions
的值是多少?@NateAbele您是对的,添加按钮确实会删除错误,但是在转换到另一个状态时,它不会从我的视图中删除网格。我还用
gridOptions
的定义编辑了上面的问题。这确实是修复方法,因此是正确的答案。谢谢。为我工作。现在是否在最新版本中添加了此功能?
        $scope.gridOptions = {
        data: 'data',
        plugins: [new ngGridFlexibleHeightPlugin()],
        showSelectionCheckbox: true,
        columnDefs: [{ field: 'username', displayName: 'Name', width: "**" },
            { field: 'email', displayName: 'Email', width: "**"}]
    };
   grid.$topPanel.on('$destroy', function() {
           if(grid.$topPanel == null) // FIX ui-router
            return;

                grid.$topPanel.off('mousedown');

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

                grid.$topPanel = null;
            });
grid.$groupPanel.on('$destroy', function () {
                if (grid.$groupPanel == null) // FIX ui-router
                    return;

                grid.$groupPanel.off('mousedown');

                grid.$groupPanel = null;
            });