比方說,我有一個應用程序有兩個路徑:「/服務」和「/服務/:服務」。動態創建網點
當用戶訪問:服務狀態時,我希望他看到與某個特定服務有關的信息列表。到目前爲止,微不足道。但是,當同一用戶訪問/服務時,我想顯示服務列表加上每個服務信息(對於每個服務)。我也想在沒有任何模板重複的情況下做到這一點。
顯而易見的答案似乎是出路,但它看起來像所有網點必須靜態命名,我有一個以前未確定的數量。它們都有獨特的名稱,但我當然無法在模板中對其名稱進行硬編碼。我想動態地確定插座名稱,所以我可以在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);
});
我還沒有弄清楚它是否會工作的方式我想,雖然。
你可以打個小jsFiddle嗎? – Wildhoney 2013-02-20 16:22:07
我無法讓jsfiddle工作。雖然不工作,但http://jsfiddle.net/qU44U/可能會給你這個想法。 – Baughn 2013-02-20 17:06:46