2012-08-02 41 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