2012-08-02 42 views
0

我知道Ember.View.views[someId]來查找視圖的「實例」。有沒有類似的方式通過字符串值查找視圖「類」?我有一種情況,列表中的項目值決定哪個視圖類被實例化並填充到容器視圖中。按名稱定位視圖類

回答

0
App = Ember.Application.create(); 

App.TestView = Ember.View.extend({ ... }); 

App["TestView"].create(); 

+0

App.get('TestView')也適用。我認爲它沒有區別,但也許只是更「強硬」 – 2012-08-02 22:36:30

+0

嗯,也許,但爲什麼我們不使用App.set(「TestView」,Ember.View.extend({...}))? – 2012-08-03 14:05:09

+0

沒錯,其實我不知道。 – 2012-08-03 14:42:06

1

你真的需要切換視圖類作爲渲染肯定會根據項目的狀態?

我寧願讓視圖的模板有條件的,就像這樣:

App.ItemView = Ember.View.extend({ 

    itemBinding: 'controller.content', 

    templateName: function() { 
    var kind = this.get('item.kind'); 
    return '%@_item_view'.fmt(kind); 
    }.property('item.kind') 
}); 

(在這裏,我化名在視圖中的項目更加清晰)

然後你需要儘可能多模板,因爲您有kind s。例如:如果您的kind的值爲[valid, invalid],那麼您將有兩個模板:valid_item_view.handlebars & invalid_item_view.handlebars

+0

邁克 - 謝謝!在這種情況下,我在第一頁上有一個初始入口點的情況,每個路徑本身幾乎都是一個完整的應用程序,並且有很多子頁面。因此,爲了概念清晰,我將它保留爲邏輯上不同且明確命名的視圖,每個視圖都有自己的模板。但是你的建議會很好 - 謝謝你的演示。無論如何,由於新的路由器原因,設計正在重新進行一點。 Ember中太多好東西:=) – 2012-09-28 23:32:50