【问题标题】:Handlebars template for Ember.js objects grouped by twoEmber.js 对象的把手模板,按两个分组
【发布时间】:2012-07-14 12:29:37
【问题描述】:

我在集合中有我的数据,我需要将它们呈现到模板中。当数据按两个分组时,我怎样才能达到结果?我需要像这样对它们进行排序:

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

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

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

【问题讨论】:

    标签: javascript templates ember.js handlebars.js


    【解决方案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')
    })
    

    【讨论】:

    • 我想通过 CSS 来实现。但是怎么做?你能帮帮我吗?
    • 这真的取决于你目前的结构抱歉。如果您愿意放弃 IE7-8 支持(或使用 jQuery 填充),您可以使用 CSS3 nth-child 选择器。
    • 顺便说一下,你的例子对我不起作用:数组未定义。返回值的格式是什么?
    • 谢谢。最后一件事:如何指定“view for content.firstObject”?在对象定义中?怎么样?
    • 这只是我说你需要通过content.firstObjectcontent.lastObject 在你的视图中访问对象。
    猜你喜欢
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 2018-12-24
    • 1970-01-01
    相关资源
    最近更新 更多