加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – ngGrid 2.0.14行选择不适用于新版Google Chrome和n

发布时间:2020-12-17 06:58:28 所属栏目:安全 来源:网络整理
导读:几天前(2015年5月),谷歌Chrome发布了新版本(43.0.2357.65米). 使用此新版本,ng-grid功能停止工作: 症状: 单击一行时,该行不会突出显示 运行一些测试后,我设法从零重现问题: 创建一个需要ng-grid 2.0.14和ngAnimate的角度应用程序. 使用旧的Google Chrome
几天前(2015年5月),谷歌Chrome发布了新版本(43.0.2357.65米).
使用此新版本,ng-grid功能停止工作:

症状:
单击一行时,该行不会突出显示

运行一些测试后,我设法从零重现问题:

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

我创造了两个掠夺者:

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

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

此外,如果您在选择行后使用Chrome Inspector检查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 $超时.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读