1

我正在使用{{#each}}帮助器来遍历父记录的子项:

... parent template ...

{{#each foo in foos}}
    {{#with foo}}
        {{ partial 'foo' }}
    {{/with}}
{{/each}}

在特定情况下,我只想呈现已经加载的记录。我相信您可以过滤此类记录(根据在 Ember Data 中,我如何仅找到已加载的记录?):

App.Foo.filter(function(foo) { return foo.get('isLoaded'); });

但是如何在每个助手中做到这一点?我在loaded_foos父记录上创建了一个属性,但它不起作用,因为它是一个函数而不是 Ember.Array。

4

2 回答 2

3

您不能在每个助手中执行此操作。您对财产的处理方法确实是正确的。什么没有奏效?它基本上应该是这样的:

App.ParentRecord = Ember.Object.extend({
  loadedFoos : function(){
    this.get("foos").filter(function(foo) { return foo.get('isLoaded'); });
  }.property("foos")
});
于 2013-03-12T18:44:58.787 回答
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示例。

于 2013-03-13T06:47:29.850 回答