【问题标题】:ember.js works very slowly with big dataember.js 处理大数据的速度很慢
【发布时间】: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-cloak 1 2 之类的无限滚动会是更好的选择吗?
  • 为了在 Ember 中渲染大表,我通常以 ember-table 结尾。它以非常好的方式处理性能问题和延迟加载等问题。
  • Emberjs 关于“显示事物列表”的故事目前相当糟糕。老实说,我不确定他们如何认真对待这个未解决的问题。请注意,1000 行无论如何都不是“大数据”。事实上,Emberjs 的严重性能问题可能会在少至 100 行时遇到。 “Ember Cloaking”项目可能会对您有所帮助,显然他们正在重构性能极差的模板渲染系统,即将进行重写,但几个月来没有任何更新。

标签: javascript ember.js event-loop


【解决方案1】:

我知道你的意思,我已经遇到过这个问题,所以请尝试检查我在stackoverflow 中发布的解决方案

【讨论】:

    猜你喜欢
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多