Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重复性能问题,不断更新_Javascript_Jquery_Html_Angularjs - Fatal编程技术网

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可以看到,my
li
元素在开发工具中不断闪烁(使用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==”
在模型为空时禁用按钮。

感谢所有为解决此问题提供帮助的人

经过大量的调试和测试,我成功地修复了它。问题是在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.textaremamodel”
,并使用
ng disabled=“post.textaremamodel==”
在模型为空时禁用按钮。

你能显示你的代码吗?你有没有尝试过系统地删除标记中额外的角度代码?我不认为这是罪魁祸首。你能在演示中分离代码吗?这样我就可以调试了。@AlphaG33k&JanR-我现在就试着用一个代码笔或者别的什么东西来隔离它。这只是一个相当大的文件,1028行长。如果我能让它工作的话,我会在几分钟内发布一个链接。这个数据id和数据过滤器类是什么?您是否在Angular之外操作DOM?@AlphaG33k-这两个属性都被名为
Wookmark
的jQuery库使用。虽然我删除了这些元素并删除了插件的初始化,但这并没有解决我的问题。你能展示你的代码吗?你有没有尝试过系统地删除标记中额外的角度代码?我不认为这是罪魁祸首。你能在演示中分离代码吗?这样我就可以调试了。@AlphaG33k&JanR-我现在就试着用一个代码笔或者别的什么东西来隔离它。这只是一个相当大的文件,1028行长。如果我能让它工作的话,我会在几分钟内发布一个链接。这个数据id和数据过滤器类是什么?您是否在Angular之外操作DOM?@AlphaG33k-这两个属性都被名为
Wookmark
的jQuery库使用。虽然我删除了这些元素并删除了插件的初始化,但这并没有解决我的问题。