Javascript AngularJS渲染需要大量时间
我有一个模型是这样的:Javascript AngularJS渲染需要大量时间,javascript,angularjs,Javascript,Angularjs,我有一个模型是这样的: { "items": [ { "type": "A", "id": "2", "number": 0, "info": "info1", "childs": [ { "type": "B", "id": "21",
{
"items": [
{
"type": "A",
"id": "2",
"number": 0,
"info": "info1",
"childs": [
{
"type": "B",
"id": "21",
"number": 0,
"info": "info1",
"childs": []
}
]
},
{
"type": "A",
"id": "1",
"number": 0,
"info": "info1",
"childs": []
},
{
"type": "A",
"id": "2",
"number": 0,
"childs": [
{
"type": "B",
"id": "21",
"number": 0,
"info": "info1",
"childs": [
{
"type": "C",
"id": "211",
"number": 0,
"info": "info1",
"childs": [
{
"type": "B",
"id": "2111",
"info": "info1",
"number": 0
}
]
}
]
}
]
}
]
}
通过4个嵌套的ng repeat
在页面中呈现。属性number
通过input=“number”
更改,每行一个。信息值由选择框更改
结构是这样的
<div ng-repeat="item in items">
<input type="number" ng-model="item.number" />
<select ng-model="item.info">
</select>
<div ng-repeat="child in items.child">
<input type="number" ng-model="child.number" />
<select ng-model="child.info">
</select>
<div ng-repeat="child2 in child.child">
<input type="number" ng-model="child2.number" />
<select ng-model="child2.info">
</select>
<div ng-repeat="child3 in child2.child">
<input type="number" ng-model="child3.number" />
<select ng-model="child3.info">
</select>
</div>
</div>
</div>
</div>
嗯,这并不是真正的网络应用程序,但对你来说已经足够了。无论如何,如果我更改input=“number”
的值,渲染过程需要1500毫秒才能完成。当我更改selectbox
selected选项时,也会发生相同的情况(但渲染速度会快一点)。
当我更改值时,我只需要更新模型中项目的属性。为什么要重新进行角度渲染?
我能做什么?
请记住,模型通常包含10/15个项目,每个项目有5到20个子项目
PS:奇怪的是,当我点击微调器(使用Chrome时出现的默认微调器)更改输入值时,数字会增加或减少2,而不是1
编辑:仍然没有解决这个问题。当我有太多的项目显示在屏幕上,所有的渲染过程太慢,四个嵌套的ng重复。是否有人可以在页面中显示我的模型并修改值,而不会在渲染时丢失2秒?我不能使用分页或无限滚动。我曾尝试在JSFIDLE(此处:)上使用您的代码,但我无法重现您指出的延迟。您可以提供一个JSFIDLE或修改我的JSFIDLE,并提供一个遇到延迟的工作示例吗?此外,您可以尝试搜索其他常见的延迟和处理时间来源,如死掉的事件侦听器、过度使用$watch语句、,等等。你不能复制延迟,因为实际的应用程序比我在这里发布的要复杂和广泛得多。我无法复制和粘贴整个项目。这就是程序中慢的部分的结构,真的很难猜测。您是否已确定信息的渲染时间为1500ms?是否还有其他因素会造成这种延误?可能ajax调用速度较慢,可能在ng repeat中使用数据之前对数据执行了大量转换……我对JDFIDLE做了一些改进,仍然没有看到任何渲染延迟或您提到的输入上的x2增量。也许你可以玩一下小提琴来寻找问题的原因。。。