假设我有一个具有两条路由的应用程序:“/services”和“/services/:service”。
当用户访问 :service 状态时,我希望他看到与一项特定服务有关的信息列表。到目前为止,微不足道。
但是,当同一个用户访问 /services 时,我想显示一个服务列表,以及每个服务的信息(对于每个服务)。我也想在没有任何模板重复的情况下做到这一点。
显而易见的答案似乎是网点,但看起来所有网点都必须静态命名,而且我有一个以前未确定的数量。它们都有唯一的名称,但我当然不能硬编码模板中的名称。我想动态确定插座名称,所以我可以在 renderTemplate 中适当地调用 this.render 来填充它们,但我不知道该怎么做。
你有什么建议?
更新:看来我可以使用 {{template}} 处理我的特殊情况,但这并不能连接另一条路线。我仍然想知道如何做到这一点;稍后我会做更复杂的事情,这肯定会更好,并且在各自的控制器中仍然存在重复的代码。
更新:我最终组成了自己的“dynOutlet”助手,如下所示:
// Define "dynamic outlets". These are just like normal outlets,
// except they dereference the outlet name.
Handlebars.registerHelper('dynOutlet', function(property, options) {
Ember.assert("Syntax: {{dynOutlet <property>}}", arguments.length === 2);
var context = (options.contexts && options.contexts[0]) || this,
normalized = Ember.Handlebars.normalizePath(
context, property, options.data),
pathRoot = normalized.root,
path = normalized.path,
value = (path === 'this') ? pathRoot : Ember.Handlebars.get(
pathRoot, path, options);
return Ember.Handlebars.helpers.outlet(value, options);
});
不过,我还没有弄清楚它是否会按我想要的方式工作。