1

ヘルパーを使用して{{#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 ではなく関数であるため機能しません。

4

2 に答える 2

3

each ヘルパー内でそれを行うことはできません。プロパティに対するあなたのアプローチは確かに正しかった。何がうまくいかなかったのですか?基本的には次のようになります。

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 に答える