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不客气。是的,余烬车把助手的文档记录非常糟糕。我也在想我应该能够通过一个数组。我希望他们将来能改进这一点。