Javascript 角度UI网格重复使用网格未重置滚动+;无限滚动不工作

Javascript 角度UI网格重复使用网格未重置滚动+;无限滚动不工作,javascript,angularjs,grid,Javascript,Angularjs,Grid,我正在使用UI-Grid()angular插件来显示数据,但我注意到了一些我无法解决或找到的怪癖 我有一个带有一些参数的搜索表单,我单击search,然后它查询数据库并返回放入该网格的结果。我进行搜索,查看数据/滚动等,然后进行另一次搜索。网格中的数据被擦除,新数据被放入。(即使用相同的网格)-由此我注意到两个问题: 1) 当我执行第二次数据库搜索时,滚动位置不会重置为顶部,而且如果不使用新指令(cellNav)滚动,我不知道如何进行 2) 与此类似,当您进行新的搜索时,无限滚动似乎停止工作 为

我正在使用UI-Grid()angular插件来显示数据,但我注意到了一些我无法解决或找到的怪癖

我有一个带有一些参数的搜索表单,我单击search,然后它查询数据库并返回放入该网格的结果。我进行搜索,查看数据/滚动等,然后进行另一次搜索。网格中的数据被擦除,新数据被放入。(即使用相同的网格)-由此我注意到两个问题:

1) 当我执行第二次数据库搜索时,滚动位置不会重置为顶部,而且如果不使用新指令(cellNav)滚动,我不知道如何进行

2) 与此类似,当您进行新的搜索时,无限滚动似乎停止工作


为了解决这两个问题,我本以为我需要简单地刷新网格…但我找不到如何解决。有什么建议吗

好吧,我找到了解决办法

我每次都重新创建DOM元素。首先,我删除元素-确保销毁隔离作用域,以避免指令观察程序null点异常

if(document.getElementById('searchGrid')) {
    $scope.element = angular.element(document.getElementById('searchGrid'));
    var isolate = $scope.element.isolateScope();
    isolate.$destroy();
    if($scope.element) $scope.element.remove();
  }
接下来,创建元素并使用$compile将其转换为angular元素并创建指令等:

  var newDirective = angular.element('<div id="searchGrid" ui-grid=\"gridOptions\" ui-grid-infinite-scroll ui-grid-auto-resize ui-grid-move-columns ui-grid-resize-column ng-style=\"{ \'height\' : height }\" ng-show=\"gridLoaded &amp;&amp; !gridLoading\"></div>');
  var element = angular.element(document.getElementById('myGrid'));
  element.append(newDirective);
  $compile(newDirective)($scope);
var newDirective=angular.element(“”);
var-element=angular.element(document.getElementById('myGrid');
元素。追加(newDirective);
$compile(newDirective)($scope);
注意myGrid只是一个空div,所以我可以将searchGrid div添加到


这似乎不是最简单的解决方案——UI-GRID(或者至少应该是)中肯定有某种东西可以清理网格以允许其重用。但它仍然有效。

用户界面网格仍然存在一些明显的怪癖。我也有类似的问题,并且发现调整网格的大小通常会有所帮助。我刚刚做了一个resizegrid方法,它根据项目的数量计算大小,然后进行设置。