我有一个视图,它迭代一组对象并打印简单的打印资源名称和一个动作:
{{#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'])});
我的问题是如何访问受支持的属性?
答案 0 :(得分: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}}