我正在使用{{#each}}
助手来遍历父记录的子项:
... parent template ...
{{#each foo in foos}}
{{#with foo}}
{{ partial 'foo' }}
{{/with}}
{{/each}}
在特定情况下,我只想渲染已经加载的记录。我相信你可以过滤这些记录(按照In Ember Data, how do I find only records that have been loaded?):
App.Foo.filter(function(foo) { return foo.get('isLoaded'); });
但是如何在每个助手中做到这一点?我在父记录上创建了一个loaded_foos
属性,但它不起作用,因为它是一个函数,而不是一个Ember.Array。
答案 0 :(得分:3)
你不能在每个助手中做到这一点。你对财产的态度确实是正确的。什么没有奏效?基本上应该是这样的:
App.ParentRecord = Ember.Object.extend({
loadedFoos : function(){
this.get("foos").filter(function(foo) { return foo.get('isLoaded'); });
}.property("foos")
});
答案 1 :(得分:0)
您也可以使用条件帮助程序在模板中执行此操作。
{{#each foos}}
{{#if isLoaded}}
{{partial "foo"}}
{{/if}}
{{/each}}
编辑:如果您已经在数组中添加了已加载和已卸载记录的混合集合,则上述情况有效。 OP询问如何实际获取加载的记录。我会这样做:
App.Foo = DS.Model.extend();
App.IndexRoute = Ember.Route.extend({
model: function() {
return App.Foo.all();
}
});
<script type="text/x-handlebars" data-template-name="index">
{{#each controller}}
{{partial "foo"}}
{{/each}}
</script>
这是一个jsfiddle示例。