Angularjs - 在ng-repeat中管理大量的html

时间:2014-02-25 13:12:54

标签: angularjs ng-repeat

我有一个ng-repeat,可以产生大约300行。我无法实现无限滚动,因为我需要页面上的所有行。每行有3个元素。

当页面加载时,我从数据库中获取所有行,如果元素存在,则显示它,如果不是,我可以选择通过单击元素所在的位置来添加它。单击时,表单将显示在该元素的正下方。

表单有4个输入,这是相当多的HTML。既然我们有双向数据绑定,并且我们在ng-repeat隔离范围内,我不能为所有3个元素使用一个表单(因为输入中的值将被共享),我需要一个。考虑到行的数量,渲染如此多的表单需要比我想要的更多。

为了更好地了解我正在使用的内容(在视觉上,代码不再相关)http://plnkr.co/edit/xNYUbi?p=preview

我想坚持使用add element选项下的表单下拉列表,因此制作模态不是一个选项。

我应该如何处理这个问题?

1 个答案:

答案 0 :(得分:2)

我不确定我理解这里的具体用例,所以我会给出一些我希望有帮助的通用建议。使用大量数据角度时,有许多选项:

  • ng-grid:有编辑模式和分页,所以使用正确的设置可以下拉所有数据,设置网格的数据源,性能应该还不错。
  • ng-repeat:如果您必须拥有自定义U / I,或者您需要在U / I中使用其他功能,那么ng-repeat的效果和它一样好。只要你没有嵌套重复(可能是坏的)并且你仔细制作你的用户界面,你应该大部分都没事。
  • 假设ng-repeat仍然太慢,你可以考虑实现某种形式的分页或ng-infinite-scroll。使用任一选项,您仍然可以最初加载整个数据集,然后将其显示在块中而不是一次性显示。

在一天结束时 - 如果在尝试将所有元素添加到DOM时性能是不可接受的,唯一真正的解决方案是改变这些元素的添加方式或根本不添加它们(是所有上述解决方案真正引领你的地方)。这可能需要与您的客户交谈或进行一些重新设计,但最终它应该是值得的。祝你好运!