2013-02-12 93 views
1

我有這種情況,我在其中存儲模板名稱的變量。我注意到,如果你有例如EmberJs:在Handlebars-helper中呈現模板

var config = { view: "PeopleView", .... } ; 

,你不能做

{{view App[config.view]}} 

如果這是可能的,我仍然有興趣的解決方案! 反正,我決定用一個把手幫助解決這個問題:

{{setVariableView config}} 

... 

Ember.Handlebars.registerBoundHelper('setVariableView', function(value, options) { 
    return App[value.view].create(value) ; // <-- this doesn't work :) 
}) ; 

在這一點上,我不知道如何調用編譯PeopleView? 有什麼建議嗎?

乾杯

回答

1

首先,您要創建您的配置對象,因爲你所做的:

App.config = Ember.Object.create({ view: 'App.MyView' }); 

然後你要註冊你的助手,你已經做了,但它需要修改一點點,因爲意見需要手動append版當你採取這種做法:

Ember.Handlebars.registerBoundHelper('setVariableView', function(value, options) { 
    var view = eval(value.view).create(); 
    view.append(); 
}); 

現在你可以在配置文件中傳遞到y我們setVariableView幫手,它會呈現中傳遞到您的配置視圖:

{{setVariableView App.config}} 

唯一要擔心的是eval利用率。也許這對清晨來說並沒有什麼幫助,但我現在還想不到更好的選擇。

+0

您可以將配置對象定義爲'App.config = Ember.Object.create({app:App,view:'MyView'});',並且在助手中:'var view = value.app [value.view ] .create();'。這樣你就不需要使用'eval' :) – 2013-02-12 13:15:24

+0

value.app [value.view] .create()創建一個Object/Class。如何創建一個字符串並將其傳遞給上下文(如:value)? – 2013-02-12 14:20:47