Javascript 重复性能问题,不断更新
我在Javascript 重复性能问题,不断更新,javascript,jquery,html,angularjs,Javascript,Jquery,Html,Angularjs,我在ng repeat中遇到了一个非常奇怪的性能问题。我的重复似乎一直在发生,即使是使用track by 从上面的gif可以看到,myli元素在开发工具中不断闪烁(使用Chrome开发工具和Firefox开发工具进行测试),这意味着DOM元素不断更新/重复。这大大降低了我的浏览器的性能,通常会使Firefox崩溃 最初,只有10个li元素,但是如果用户向下滚动,我会加载另外10个,因此滚动是无限的。大约3-4次加载(30-40个li元素)后,浏览器将变得无响应 我注意到gif中的第一个li在瞬
ng repeat
中遇到了一个非常奇怪的性能问题。我的重复似乎一直在发生,即使是使用track by
从上面的gif可以看到,myli
元素在开发工具中不断闪烁(使用Chrome开发工具和Firefox开发工具进行测试),这意味着DOM元素不断更新/重复。这大大降低了我的浏览器的性能,通常会使Firefox崩溃
最初,只有10个li
元素,但是如果用户向下滚动,我会加载另外10个,因此滚动是无限的。大约3-4次加载(30-40个li
元素)后,浏览器将变得无响应
我注意到gif中的第一个li
在瞬间接收到id=“sizzle1458257524957”
属性,然后消失。我以前从未见过这个,而且它肯定不是来自我自己的代码。不太确定这是否是罪魁祸首
我尝试在ng repeat
使用的postData
范围变量中添加一个$watch()
,然后记录它的更新时间,尽管它只更新了两次,所以我仍然不明白为什么li
元素总是在更新
值得注意的是,我使用的是jQuery(2.2.0),但不是这些元素上的任何事件处理程序。我的angular版本是1.5.0。感谢所有为解决此问题提供帮助的人 经过大量的调试和测试,我成功地修复了它。问题是在my
li
元素的文本区域中使用了ng disabled
中的作用域函数
这就是函数:
$scope.isCommentInputEmpty = function(commentPostId) {
if($(".newsFeedPostItem[data-id='" + commentPostId + "']").find(".feedItemNewComment .taggableInput").val() === '') {
return true;
} else {
return false;
}
};
然后我有一个按钮,上面有ng disabled=“isCommentInputEmpty(post.id)”
所以我猜Angular会经常运行这个函数来检查textarea,看看它是否应该被禁用
为了解决这个问题,我只需在我的文本区域中添加一个模型,例如
ng model=“post.textaremodel”
,并使用ng disabled=“post.textaremodel==”
在模型为空时禁用按钮。感谢所有为解决此问题提供帮助的人
经过大量的调试和测试,我成功地修复了它。问题是在myli
元素的文本区域中使用了ng disabled
中的作用域函数
这就是函数:
$scope.isCommentInputEmpty = function(commentPostId) {
if($(".newsFeedPostItem[data-id='" + commentPostId + "']").find(".feedItemNewComment .taggableInput").val() === '') {
return true;
} else {
return false;
}
};
然后我有一个按钮,上面有ng disabled=“isCommentInputEmpty(post.id)”
所以我猜Angular会经常运行这个函数来检查textarea,看看它是否应该被禁用
为了解决这个问题,我只需在我的文本区域中添加一个模型,例如
ng model=“post.textaremamodel”
,并使用ng disabled=“post.textaremamodel==”
在模型为空时禁用按钮。你能显示你的代码吗?你有没有尝试过系统地删除标记中额外的角度代码?我不认为这是罪魁祸首。你能在演示中分离代码吗?这样我就可以调试了。@AlphaG33k&JanR-我现在就试着用一个代码笔或者别的什么东西来隔离它。这只是一个相当大的文件,1028行长。如果我能让它工作的话,我会在几分钟内发布一个链接。这个数据id和数据过滤器类是什么?您是否在Angular之外操作DOM?@AlphaG33k-这两个属性都被名为Wookmark
的jQuery库使用。虽然我删除了这些元素并删除了插件的初始化,但这并没有解决我的问题。你能展示你的代码吗?你有没有尝试过系统地删除标记中额外的角度代码?我不认为这是罪魁祸首。你能在演示中分离代码吗?这样我就可以调试了。@AlphaG33k&JanR-我现在就试着用一个代码笔或者别的什么东西来隔离它。这只是一个相当大的文件,1028行长。如果我能让它工作的话,我会在几分钟内发布一个链接。这个数据id和数据过滤器类是什么?您是否在Angular之外操作DOM?@AlphaG33k-这两个属性都被名为Wookmark
的jQuery库使用。虽然我删除了这些元素并删除了插件的初始化,但这并没有解决我的问题。