我正在尝试为以下情况实施帮助:
{{#inRange collection 1 3}}
{{view App.SomeView content=this}}
{{/inRange}}
这个助手的目的是在一些集合中只渲染几个项目 - >这由第二和第三个参数指定 - >开始和结束。
到目前为止,我正在尝试这样的事情:
Ember.Handlebars.registerHelper('inRange', function (collection, start, end, options) {
var res = '';
var data = Ember.Handlebars.get(this, collection);
data = data.slice(start, end);
data.forEach(function (item) {
res += options.fn(item);
});
return res;
});
但是如果我需要在块帮助器中渲染view
,这不起作用。我查看了native
Ember each
实现,但他们正在以其他方式进行此操作。
他们使用这样的东西:
options.hash.dataSourceBinding = path;
return Ember.Handlebars.helpers.collection.call(this, 'Ember.Handlebars.EachView', options);
问题是因为我找不到任何关于这些代码行的文档。
有谁知道如何制作自定义each
帮助器,或者知道Ember each
如何在内部工作?
答案 0 :(得分:1)
我想学习同样的东西。
但是在您的情况下,而不是创建自己的车把,最好将子集合创建为属性并将其传递给each
助手。
在View类
中subCollection: function(){
var collection = this.get('collection');
return collection.slice(1,3);
}.property()
车把
{{#each subCollection}}
{{view App.SomeView content=this}}
{{/each}}