当前位置: 首页 > 面试题库 >

Angular ngGrid选择页面加载行

柏麒
2023-03-14
问题内容

我的问题是对该问题的扩展

从ng-grid获取选择行?

plunker -
http://plnkr.co/edit/DiDitL?p=preview

我需要在页面加载时选择一行,并且需要避免听’ngGridEventData’

调用$ scope.gridOptions.selectRow(2,true); 由于尚未加载网格,因此控制器主体中的“故障”失败。

避免监听ngGridEventData的原因是,我需要控制器监听之前触发的事件,并基于此需要选择nggrid行。

有任何想法吗?


问题答案:

对我而言,没有任何答案有效(我使用ng-grid v2.0.14)。

所选答案之所以可行,可能是因为数据不是很大,还是没有通过ajax调用加载的,否则您不能在ngGridEventData之前选择行,因为在呈现行时会触发该事件,并且如果尚未渲染。
如果这些条件中的任何一个失败或网格花费的时间比平时多,则所选答案将不起作用。

我有一个约有2000行的可滚动网格,但是我对监听ngGridEventData没有任何限制,所以我就这样做了,尽管它对我来说有一种怪异的行为:ngGridEventData对我正好触发了4次,在数据到达之前触发了两次从ajax调用开始,然后两次。
我使用了这个jquery插件http://benalman.com/projects/jquery-throttle-debounce-
plugin/(即使没有jQuery也可以使用)来制作它,因此该函数仅被调用一次。

并且由于这还不够,因此“ selectRow / selectItem”函数会两次触发“afterSelectionChange”事件(由于某种原因第一次出现错误的行)。这是我必须执行的操作,以确保仅针对正确的行触发该事件一次。

这就是我发生的事情:

  • ngGridEventData(没有afterSelectionChange触发器,可能是因为没有呈现的行)
  • ngGridEventData(没有afterSelectionChange触发器,可能是因为没有呈现的行)
  • Ajax调用以检索数据
  • 延迟(可能是渲染)
  • ngGridEventData
  • afterSelectionChange x2
  • ngGridEventData
  • afterSelectionChange x2

所以我不得不用这个:

  • 进行反跳操作以确保在延迟期间仅调用一次该函数(超时很低,因为这两个调用成对存在,并且呈现的行检查确保未使用第一个调用)
  • 检查渲染的行> 0,以确保在延迟和数据加载可能需要一些时间的慢速系统(或慢速连接)上未触发前两个事件
  • (可选)使用rowItem.selected来避免另一个“错误”,因为afterSelectionChange事件即使在选择一行时也会触发两次(对于未选中的行一次,对于选定的行一次)
  • 使用fireOnlyOnce变量避免两次调用afterSelectionChange函数。

这是一个示例代码

$scope.fireOnlyOnce=true;
$scope.gridOptions = {
    //Stuff
    afterSelectionChange: function (rowItem) {
        if($scope.fireOnlyOnce){
            if(rowItem.selected){
                //Do stuff
            }
        } else {
            $scope.fireOnlyOnce=true;
        }
    }
};

$scope.$on('ngGridEventData', jQuery.debounce(100, function (row, event){   
    var renderedRows = row['targetScope'].renderedRows.length;
    if(renderedRows>0){
        $scope.fireOnlyOnce=false;
        $timeout(function(){$scope.gridOptions.selectRow(2, true)});
    }
}));


 类似资料:
  • 我有一个非常基本的mvc应用程序。 我有两个css文件,即site.css和bootstrap.min.css。 我看到在应用程序中,正在加载bootstrap.min.css中提到的样式,它具有如下样式 html,正文{边距:0;填充:0;} 等等。 在调试代码时,我了解到这两个css文件都存在于_layout.cshtml中 link href=“@url.content(”~/content

  • 我想更改页面加载时的“选择组件”值。我读了相关的帖子,那里提出的每一个解决方案都适用于点击按钮。然而,我想要的是在页面加载后设置值,而不需要任何用户操作。我拥有的是: 以及: 我有相同的代码附加到按钮上,并且它可以工作。它只是不适用于准备()函数。所以我的问题是:如何在页面加载后设置选择值? 完整html

  • 本文向大家介绍选择在HTML中的剃刀Html.DropDownListFor()的页面加载上选择了哪个选项?,包括了选择在HTML中的剃刀Html.DropDownListFor()的页面加载上选择了哪个选项?的使用技巧和注意事项,需要的朋友参考一下 速记用于确定在剃刀Html.DropDownListFor()的页面加载上选择了哪个选项。您可以尝试运行以下代码片段-

  • ⚠️ 只有生产环境才有此功能 ⚠️ Examples Prefetching Next.js 有允许你预加载页面的 API。 用 Next.js 服务端渲染你的页面,可以达到所有你应用里所有未来会跳转的路径即时响应,有效的应用 Next.js,可以通过预加载应用程序的功能,最大程度的初始化网站性能。查看更多. Next.js 的预加载功能只预加载 JS 代码。当页面渲染时,你可能需要等待数据请求。

  • 我试图创建一个等待加载页面的方法,但我出现了一个错误。可能我没有正确使用这个方法。 错误是: