ng-repeat排序在jQuery中引发exception
我有一个由ng-repeat创建的行的表。 表头具有ng-click,用于设置排序的谓词(该函数还确定方向,asc / desc)。 排序工作正常,但由于某种原因,每次我更改谓词和排序时,我都会从jQuery中获得exception。
这是我正在做的一个更好的例子: http ://plnkr.co/edit/qfNcm9RPQSsNgqmm3TYS?p = preview
正如您在plnkr中看到的那样,ng-repeat非常简单。 我们项目中的ng-repeat是相似的,而不是更复杂。
这实际上发生在我们代码中的许多地方,我们在它们之间使用不同的排序方法,但它们仍然受到影响。
可以单击表标题以对项目进行排序。 那个plunkr没有出现问题。 即使排序在我的页面上工作,它也会打破页面上的其他内容(就像一个光滑的轮播控件)。 例外是在jquery.js的第1430行(通过包括Sizzle.js的谷歌CDN的版本2.1.1)。 发生exception的方法是Sizzle.attr。 它看起来像是在循环遍历使用ng-repeat创建的所有元素,并从中获取属性值。 当它到达“结束ngRepeat:AllContests | orderBy:sort:ReverseSort中的竞赛”注释时,会发生exception,表示ng-repeat部分的结束。
具体来说,当我尝试在元素上使用getAttribute()时,我得到’Uncaught TypeError:undefined不是函数’。
return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute( name ) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
现在,我可以拉jquery,将它添加到我的项目编辑它,以便它评估elem.nodeName ==“#comment”,并在这种情况下返回null。 我更愿意知道我做错了什么,或者是否有更好的方法。
否则,是否有一种方法可以覆盖该方法并在不编辑jquery库的情况下提供我自己的方法?
编辑
以下是操作中的问题示例: https : //playmlf.com/Lobby/ContestLobby
临时决议
我已经编辑了jQuery库,因此它看起来如此:
Sizzle.attr = function (elem, name) { if (elem.nodeName == '#comment') return null; // Set document vars if needed if ( ( elem.ownerDocument || elem ) !== document ) { setDocument( elem ); }
注意:这只是Sizzle.attr方法的顶部。 第一个if
是兴趣线。 如果元素是注释,则返回null。 我不想编辑jquery库,但是我无法弄清楚如何覆盖这个特定的方法,或者在排序期间首先不让它被调用。 我不喜欢这个修复,但同时我花了太多时间在这上面并需要一些有用的东西。 我稍后会支付坏的定额税。
这似乎是因为Comment元素没有getAttribute方法。
记录了一个错误 。 作为一种变通方法,您可以将其添加到您的代码库中,并确保它在早期执行:
Object.getPrototypeOf(document.createComment('')).getAttribute = function() {}
- 在FullCalendar中将数据传递给后台事件对象
- 依赖选择元素的AngularJS指令
- 如何从事件Dragover或Dragenter中的DataTransfer.getData获取数据
- 在Select2上将自定义标头传递给Ajax请求
- jQuery语法错误:#/
- AngularJS嵌套应用程序
- 如何在angularJs中单击按钮添加div
- 如何获取其他页面的数组详细信息
- 选择用ng-show显示的输入
Interesting Posts
指令链接function无权访问整个模板DOM
jQuery-UI – “无法读取未定义的属性’步骤’
使用ng-click切换父元素的类?
jqGrid-> treeGrid不能与我的angular指令一起使用
问卷的下一步按钮的逻辑?
JsonP返回“Uncaught SyntaxError:Unexpected token:”AngularJS – routingnumbers.info
Angular $ http.get和jQuery $ .getJSON错误,但URL在自己的选项卡中打开正常
AngularJS – 在$(document).ready上的ng-repeat循环内定位元素
Angularjs + ASP.NET MVC + ASP.NET Web API
如何在Angular Js中编写类的指令?