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 函数本身在路由器中定义,并转换到新路由)。

...
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

一种方法可能是将资源和支持的数组组合成一个对象,用于循环中的“上下文”。

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 回答