【发布时间】:2014-02-19 09:06:28
【问题描述】:
我需要显示 1000 行的表格。但是当我将内容传递给控制器时,页面在几秒钟内没有响应
下面是我写的代码来说明问题
您可以在http://emberjs.jsbin.com/qixoruyi/8/edit查看工作演示
当我单击“更改内容”按钮时,页面在几秒钟内没有响应,此时计数器没有增加,那么此时 ember 不会将控制权返回给 javascript 事件循环。 1000 行对于 ember 来说太多了吗?还是我做错了什么?
<script type="text/x-handlebars">
<div>counter: {{counter}}</div>
<button {{action "changeContent"}}>change content</button>
<table border="1">
<tbody>
{{#each}}
<tr>
{{#each}}
<td>{{this}}</td>
{{/each}}
</tr>
{{/each}}
</tbody>
</table>
</script>
var newContent = [];
var i,j, t, x=0;
for(i = 0; i < 1000; i++) {
t = [];
for(j=0; j<10; j++) {
t.push("x"+x++);
}
newContent.push(t);
}
App = Ember.Application.create();
App.Router.map(function() {});
App.ApplicationRoute = Ember.Route.extend({
model: function() {
return [];
}
});
App.ApplicationController = Ember.ArrayController.extend({
counter: 0,
init: function() {
var t = this, c = 0;
setInterval(function(){
t.set('counter', c++)
}, 200);
},
actions: {
changeContent: function() {
this.set('content', newContent);
}
},
});
感谢您的回答!
【问题讨论】:
-
为了在 Ember 中渲染大表,我通常以 ember-table 结尾。它以非常好的方式处理性能问题和延迟加载等问题。
-
Emberjs 关于“显示事物列表”的故事目前相当糟糕。老实说,我不确定他们如何认真对待这个未解决的问题。请注意,1000 行无论如何都不是“大数据”。事实上,Emberjs 的严重性能问题可能会在少至 100 行时遇到。 “Ember Cloaking”项目可能会对您有所帮助,显然他们正在重构性能极差的模板渲染系统,即将进行重写,但几个月来没有任何更新。
标签: javascript ember.js event-loop