3

這是我的平面模型:Emberjs,每塊幫手先進

[ 
    { id: 1, title: '', body: '' }, 
    { id: 2, title: '', body: '' }, 
    { id: 3, title: '', body: '' }, 
    { id: 4, title: '', body: '' }, 
    // ... 
] 

這是我預期的模板:

<div class="row"> 
    <div class="col-md-4 col-md-offset-2"> 
     <h6>{{! item1 title }}</h6> 
     <p>{{! item1 body}}</p> 
    </div> 
    <div class="col-md-4 col-md-offset-1"> 
     <h6>{{! item2 title}}</h6> 
     <p>{{! item2 body}}</p> 
    </div> 
    </div> 
    <div class="row"> 
    <div class="col-md-4 col-md-offset-2"> 
     <h6>{{! item3 title }}</h6> 
     <p>{{! item3 body}}</p> 
    </div> 
    <div class="col-md-4 col-md-offset-1"> 
     <h6>{{! item4 title}}</h6> 
     <p>{{! item4 body}}</p> 
    </div> 
    </div> 
    <!-- ... --> 

什麼是灰燼的方法來做到這一點?

簡單的每個幫助程序都無濟於事,因爲模板組合了模型中的兩個元素。

我是否應該更改我的模型,自定義數組控制器,構建組件,編寫模板助手還是有內置解決方案來解決這個簡單問題?

+0

您可能需要一個數組控制器。看看http://emberjs.com/api/classes/Ember.ArrayController.html – Sharagoz

+0

數組控制器不幫我,這個每個循環都有一個轉折,如果你看看預期的模板,它將兩個項目分組一次迭代。 – eguneys

回答

2

你應該改變你的數據結構。我仍然使用一個ArrayController,但同時我會在它上面添加一個計算屬性,將所有內容分組(我猜你的模式是每隔一個)。

App.FooController = Em.ArrayController.extend({ 
    groupedItems: function(){ 
    var groups = [], 
     group, 
     model = this.get('model'), 
     len = this.get('length'); 
    for(var i = 0;i<len;i++){ 
     if(i%2==0){ 
     group = []; 
     groups.push(group); 
     } 
     group.push(model[i]); 
    } 
    return groups; 
    }.property('model.[]') 
}); 

{{#each item in groupedItems}} 
    <div class="row"> 
    <div class="col-md-4 col-md-offset-2"> 
     <h6>{{ item.firstObject.title }}</h6> 
     <p>{{ item.firstObject.body}}</p> 
    </div> 
    <div class="col-md-4 col-md-offset-1"> 
     <h6>{{item.lastObject.title}}</h6> 
     <p>{{item.lastObject.body}}</p> 
    </div> 
    </div> 
{{/each}} 

老實說,也有將它們分組的方式擺,我想說明的是分組將是最簡單的點。

+0

這是什麼模型。[]'我不能說模型 – eguneys

+0

搜索分組我發現這個類似的問題http://stackoverflow.com/questions/11491092/handlebars-template-for-ember-js-objects-分組由兩個 – eguneys

+0

噢,相同的概念。不,你不能只說模型,如果你這樣做,它只會更新如果數組本身被替換,而不是如果一個項目被添加/從數組中刪除(如果這永遠不會發生,並且模型永遠不會發生要被替換,放置在計算出的屬性依賴關係中可能毫無意義)。 – Kingpin2k