2013-02-20 89 views
4

我有一個兩層深度數據模型,我想用Ember.js作爲嵌套列表顯示。如果我做了簡單的版本,它表現相當好:Ember.js嵌套視圖變得非常慢

{{#each parent in content}} 
    <p>Table {{parent.id}}</p> 
      <ul> 
       {{#each item in parent.children}} 
       <ul> 
        <li>{{item.position}}</li> 
        <li>{{item.position}}</li> 
        <li>{{item.position}}</li> 
       </ul> 
       {{/each}} 
      </ul> 
    {{/each}} 

http://jsfiddle.net/krumpi/TdZJG/

然而,如果不是的顯示爲原始字符串我使用嵌套Ember.Select和Ember.TextArea視圖的性能模型的性能受到了很多,它需要被按下加載按鈕相當多之後的頁面來顯示控制:

{{#each parent in content}} 
      <ul> 
       {{#each item in parent.children}} 
       <ul> 
        <li>pos: {{item.position}}</li> 
        <li> 
        {{view Ember.Select 
         class="input-small" 
         contentBinding="App.CheckValues" 
         selectionBinding="item.status"}} 
        </li> 
        <li>{{view Ember.TextArea class="textarea-animated" name="description" valueBinding="item.comment"}}</li> 
       </ul> 
       {{/each}} 
      </ul> 
    {{/each}} 

http://jsfiddle.net/krumpi/wtwHN/

關於如何提高性能,你有什麼建議嗎?這是用ember-1.0.0-pre4

+0

這是由於您在第二種方法中創建的綁定。創建綁定是一項昂貴的任務。 – mavilein 2013-02-20 19:29:24

+0

我想這可以通過編寫一個ContainerView來減輕這些綁定設置。但不幸的是,我還沒有開發出自己的ContainerView。 – mavilein 2013-02-20 19:44:48

+0

我不知道你是否可以在更高層次上進行綁定,這可能有助於減少綁定的數量。 – Krumpi 2013-02-21 11:50:49

回答

0

而不是使用Ember選擇和textarea視圖使用普通的html標籤爲他們,只綁定屬性。這些視圖通常會佔用更多的內存,並且將它們寫入嵌套結構中預計會讓您的代碼運行緩慢。