Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用余烬';s handlebar#块辅助对象中的每个辅助对象,用于将数组分割成块_Javascript_Ember.js_Handlebars.js - Fatal编程技术网

Javascript 使用余烬';s handlebar#块辅助对象中的每个辅助对象,用于将数组分割成块

Javascript 使用余烬';s handlebar#块辅助对象中的每个辅助对象,用于将数组分割成块,javascript,ember.js,handlebars.js,Javascript,Ember.js,Handlebars.js,我正在尝试将ArrayController的内容切成块(用于表示目的)。在每个块中,我希望迭代项目,以便正确地呈现所有内容 我试图通过编写一个分区Handlebars块助手来实现这一点,这似乎很有效。但是,当我尝试循环每个区块的内容时,each抛出以下错误:“断言失败:每个循环的值必须是一个数组。您传递了[object object]” helpers.js Ember.Handlebars.registerHelper('partition', function(path, options){

我正在尝试将
ArrayController
内容
切成块(用于表示目的)。在每个块中,我希望迭代项目,以便正确地呈现所有内容

我试图通过编写一个
分区
Handlebars块助手来实现这一点,这似乎很有效。但是,当我尝试循环每个区块的内容时,
each
抛出以下错误:
“断言失败:每个循环的值必须是一个数组。您传递了[object object]”

helpers.js

Ember.Handlebars.registerHelper('partition', function(path, options){
  path = path === '' ? 'this' : path;
  var arr = [];
  var data = Ember.Handlebars.get(this, path, options).content;
  var ret = '';
  while(data.length){
    arr.push(data.splice(0, options.hash.size || 2));
  }
  for(var i = 0, len = arr.length; i < len; i++){
    ret = ret + options.fn(arr[i]);
  };
  return ret;
});
<h2>Your photos</h2>
{{#partition controller.photos size=2}}
  <div class="slide">
    {{#each this}}
      {{this.title}}
    {{/each}}
  </div>
  <br/><br/><br/>
{{/partition}}
Ember.handlebar.registerHelper('partition',函数(路径,选项){
path=path==''这个:路径;
var-arr=[];
var data=Ember.handlebar.get(this,path,options).content;
var-ret='';
while(data.length){
arr.push(data.splice(0,options.hash.size | | 2));
}
对于(变量i=0,len=arr.length;i
模板.hbs

Ember.Handlebars.registerHelper('partition', function(path, options){
  path = path === '' ? 'this' : path;
  var arr = [];
  var data = Ember.Handlebars.get(this, path, options).content;
  var ret = '';
  while(data.length){
    arr.push(data.splice(0, options.hash.size || 2));
  }
  for(var i = 0, len = arr.length; i < len; i++){
    ret = ret + options.fn(arr[i]);
  };
  return ret;
});
<h2>Your photos</h2>
{{#partition controller.photos size=2}}
  <div class="slide">
    {{#each this}}
      {{this.title}}
    {{/each}}
  </div>
  <br/><br/><br/>
{{/partition}}
你的照片
{{{#分区控制器.photos size=2}
{{{#每个这个}
{{this.title}}
{{/每个}}



{{/分区}
分区中的
是大小正确的数组

我怎样才能让它工作?每个
从哪里获取其内容

要点可以在这里找到:

我解决了您的问题,请参阅

  • 在helper中,我创建了一个新的
    Ember.Object
    ,其中包含分区集合。此对象作为上下文传递给
    options.fn()

  • 我在块中添加了一个带有
助手的
,以设置每个
块的上下文


我希望这会有帮助。

非常有效,非常感谢!我仍然不能完全确定为什么创建一个新的
Ember.Object
比只在数组上迭代更有效。我最好的猜测是它与
#每个
的实现细节有关。或者为什么需要
#with
才能使
#每个
正常工作。但我想我对余烬的理解会及时到达那里:)再次感谢!实际上,用
#中包装我的原始解决方案似乎也很有效。我想我需要仔细阅读《恩伯的把手助手》中的范围界定。@frekw不客气。是的,余烬车把助手的文档记录非常糟糕。我也在想我应该能够通过一个数组。我希望他们将来能改进这一点。