Javascript Emberjs,每个块帮助器都是高级的

Javascript Emberjs,每个块帮助器都是高级的,javascript,ruby-on-rails,ember.js,template-engine,handlebars.js,Javascript,Ruby On Rails,Ember.js,Template Engine,Handlebars.js,这是我的平面模型: [ { 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-

这是我的平面模型:

 [
    { 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>
  <!-- ... -->

{{!item1 title}}
{{!item1 body}

{{!item2 title}} {{!item2 body}

{{!项目3标题} {{!item3 body}

{{!item4 title} {{!item4 body}

什么是余烬方法来做到这一点

简单的each helper不会有帮助,因为模板将模型中的两个元素组合在一起


我应该更改模型、自定义阵列控制器、构建组件、编写模板帮助程序,还是有一个内置的解决方案来解决这个简单问题?

您应该更改数据结构。我仍然会使用ArrayController,但同时我会在其上添加一个computed属性,将所有内容分组(我猜您的模式是每隔一个)

App.FooController=Em.ArrayController.extend({
groupedItems:function(){
变量组=[],
集团,,
model=this.get('model'),
len=this.get('length');

对于(var i=0;iYou可能需要一个数组控制器。查看数组控制器对我没有帮助,每个循环都有一个转折点,如果您查看预期的模板,它会在一次迭代中对两个项目进行分组。此“模型”是什么。[]“我不能只说模型搜索分组我发现了一个类似的问题哦,是的,相同的概念。不,你不能只说模型,如果你这样做了,它只会在数组本身被替换时更新,而不会在数组中添加/删除项时更新。”(如果这种情况永远不会发生,并且模型也永远不会被替换,那么将任何一个放置在计算属性依赖项中都可能是毫无意义的)。
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}}