0

オブジェクトのコレクションを反復処理し、リソースの名前をアクションとともに単純に出力するビューがあります。

{{#each resource in resources}}
  <li><a {{action showResource resource}}>{{resource.name}}</a></li>
{{/each}}

リソースは、次の構造を持つモデルからのものです。

{
   supported: ['a', 'b', 'c'],
   resources: [
      {
         id: 1,
         name: 'resource 1'
      }
   ]
}

私の質問は、showResource 関数で「サポートされている」プロパティを取得するにはどうすればよいですか? (showResource 関数自体は Router で定義され、新しいルートへの遷移を行います)。

...
showResource: Ember.Route.transitionTo('resource'),
...
resource: Ember.Route.extend({
route: '/resources/:resourceId',
connectOutlets: function(router, context) {
    router.get('projectController').connectOutlet('resource', TL.Resource.loadResource(context['id']));
}

レンダリングされる新しいビューでは、以前のモデルでサポートされているプロパティにアクセスする必要があります。したがって、次の方法で connectOutlet に渡すつもりでした。

router.get('projectController')
      .connectOutlet('resource', {supported: ???, resource: TL.Resource.loadResource(context['id'])});

私の質問は、サポートされているプロパティにアクセスするにはどうすればよいですか?

4

1 に答える 1

1

1 つのアプローチは、リソースとサポートされている配列を組み合わせて、ループ内の「コンテキスト」用の 1 つのオブジェクトにすることです。

var Resource = Ember.Object.extend({
    resource: null,
    supported: null
});

次に、ビュー/コントローラーで次を定義します。

combinedResources: function() {
    var combined = [];
    this.get('resources').forEach(function(resource) {
        combined.push(Resource.create({
            resource: resource,
            supported: supported
        }))
    });

    return combined;
}.property('resources', 'supported')

今テンプレに

{{#each resource in combinedResources}}
    <li><a {{action showResource resource}}>{{resource.resource.name}}</a></li>
{{/each}}
于 2012-09-11T19:00:24.930 に答える