2014-02-19 188 views
0

我需要顯示1000行的表格。但是,當我通過內容控制,頁面不幾秒ember.js對於大數據非常緩慢

下面內做出迴應是我寫的,顯示問題的代碼

你可以看到在http://emberjs.jsbin.com/qixoruyi/8/edit

工作演示,當我點擊「更改內容「按鈕,頁面在幾秒鐘內沒有響應,此時,計數器不增加,此時此時ember不會將控制權返回給javascript事件循環。 1000行對於餘燼來說太多了?或者我做錯了什麼?

<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); 
    } 
    }, 
}); 

謝謝您的回答!

+0

張貼了順便說一句,是不是有點棘手,爲用戶應對?將無限滾動使用像燼斗篷[1](http://eviltrout.com/2014/01/04/hiding-offscreen-ember.html)[2](https://github.com/eviltrout/ember外殼)是一個更好的選擇? – bcmcfc

+0

爲了在Ember中渲染大型表格,我通常最終使用[ember-table](https://github.com/Addepar/ember-table)。它以非常好的方式處理性能問題和延遲加載等內容。 –

+0

「顯示事物列表」的Emberjs故事目前非常低劣。老實說,我不確定他們如何認真對待這個問題,而不去處理。請注意,1000行不是任何延伸的「大數據」。事實上,Emberjs嚴重的性能問題可能會在100行內遇到。 「Ember Cloaking」項目可能會對你有所幫助,顯然他們正在重構可怕的非高性能模板渲染系統,並且即將重寫,但幾個月來沒有任何更新。 – Purrell

回答

0

我知道你的意思,我已經有這個問題,所以儘量要檢查我的解決方案,我在stackoverflow