gpt4 book ai didi

angularjs - ngGrid 2.0.14 行选择不适用于新版 Google Chrome 和 ngAnimate

转载 作者:行者123 更新时间:2023-12-04 15:56:41 26 4
gpt4 key购买 nike

前几天(2015年5月),谷歌浏览器发布了一个新版本(43.0.2357.65 m)。
有了这个新版本,ng-grid功能停止工作:

症状:
当我单击一行时,该行没有突出显示

在运行了一些测试之后,我设法从零重现了这个问题:

  • 创建一个需要 ng-grid 2.0.14 和 ngAnimate 的 angular 应用程序。
  • 使用旧的 Google Chrome 版本,该行会正确突出显示。
    使用新版本的 Google Chrome,该行不会突出显示(尽管它已被选中)

  • 我创建了两个 plunker:

    Plunkr 1:没有 ngAnimate 的应用
    http://plnkr.co/edit/2pSBX9K0QaeaSihMKnGG?p=preview
    选择一行时,无论 Chrome 版本如何,该行都会突出显示

    Plunkr 2:带有 ngAnimate 的应用程序
    http://plnkr.co/edit/hyRO4fTwglSCL8KCTgHA?p=preview
    选择一行时,该行在旧版 Chrome 中突出显示,但在新版 Chrome 中这不起作用!

    此外,如果您在选择一行后使用 Chrome Inspector checkin Plunkr 2,您可以看到该行确实获得了类 .ngRow.selected (这个类通过改变它的背景颜色来突出显示行)但是 Chrome 没有在视觉上代表这个变化(这个类获取)

    我该如何解决这个问题?任何线索?

    编辑:
    我创建了第三个 plunkr:
    http://plnkr.co/edit/cWMlKEz39n8K52VWH9q8?p=preview

    这是第二个 plunkr 的分支,其中我为每个没有类 "angular-animate" 的项目禁用了动画。在其中,即:
    app1.config(['$animateProvider', function($animateProvider){
    $animateProvider.classNameFilter(/angular-animate/);
    }]);

    这有效(现在行在选择后突出显示)但如果您在应用程序中使用动画,这将主要破坏所有其他动画!例如 bootstrap-ui 模态。所以,这不是一个解决方案,而是一个想法:我只需要禁用 ng-grid 的动画。 我如何做到这一点?
    classNameFilter(x)仅对类 x 的项目启用动画在他们之中。是否有类似的功能可以禁用某些项目的动画?

    最佳答案

    尝试这个:

    afterSelectionChange: function(rowItem, event) {
    var x = document.querySelectorAll(".ng-scope .ngRow");
    x[rowItem.rowIndex].style["webkitUserSelect"] = "none";
    $timeout(function() {
    x[rowItem.rowIndex].style["webkitUserSelect"] = "text";
    }, 100);
    }

    此修复适用于多个项目。不过请记住 DI $timeout。

    关于angularjs - ngGrid 2.0.14 行选择不适用于新版 Google Chrome 和 ngAnimate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30428135/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com