2012-07-15 32 views
1

我在集合中有我的数据,我需要将它们呈现到模板中。如何在数据分为两组的情况下实现结果?我需要他们这样的排序:Ember.js对象分组为2的把手模板

._______________________ 
| 1 | 3 | 5 
|___|___|_______________ 
| 2 | 4 | and so on... 
|___|___|_______________ 

我创建垂直div元素为每1 + 2,3 + 4,......对样式像这样的项目。我如何使用把手将数据渲染到这样的网格?我所能做的就是这样:

{{#each App.myController}} 
... render item ... 
{{/each}} 

回答

1

首先,我会尝试在CSS中进行此操作,如果在布局中尽可能。

如果没有,最好的办法是将一个计算属性添加到您的控制器中,并将它们分组为成对,并以此方式进行。这样的事情:

{{#each App.myController.pairedContent}} 
    <!-- view for content.firstObject --> 
    <!-- view for content.lastObject --> 
{{/each}} 

App.MyController = Ember.ArrayController.extend({ 
    pairedContent: (function(){ 
    return this.get('content').reduce(function(array, object, index){ 
     if(index % 2){ 
     array.get('lastObject').pushObject(object) 
     } 
     else{ 
     array.pushObject(Ember.A([object])) 
     } 
     return array 
    }, Ember.A()) 
    }).property('content') 
}) 
+0

我想通过CSS做到这一点。但是如何?你能帮我吗? – 2012-07-16 21:46:32

+0

这真的取决于你目前的结构抱歉。如果你愿意放弃IE7-8的支持(或者用jQuery来填充它),你可以使用CSS3的第n个子选择器。 – 2012-07-17 01:54:29

+0

顺便说一句,你的例子不适合我:数组是未定义的。返回值的格式是什么? – 2012-07-17 09:01:47