【发布时间】:2023-03-21 09:09:01
【问题描述】:
我正在尝试将ArrayController 的content 切成块(用于演示目的)。在每个块中,我想迭代项目以正确渲染所有内容。
我尝试通过编写partition Handlebars 块助手来完成此操作,这似乎有效。但是,当我尝试遍历每个块的内容时,each 会抛出以下错误:"Assertion failed: The value that #each loops over must be an Array. You passed [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;
});
template.hbs
<h2>Your photos</h2>
{{#partition controller.photos size=2}}
<div class="slide">
{{#each this}}
{{this.title}}
{{/each}}
</div>
<br/><br/><br/>
{{/partition}}
#partition 中的this 是大小正确的数组。
我怎样才能让它工作? each 从哪里获取内容?
可以在这里找到要点:https://gist.github.com/frekw/2d3627039b42891a0b0a
【问题讨论】:
标签: javascript ember.js handlebars.js