【问题标题】:locate view class by name按名称定位视图类
【发布时间】:2012-08-02 19:30:55
【问题描述】:

我知道Ember.View.views[someId] 可以找到视图的“实例”。是否有类似的方法通过字符串值查找视图“类”?我有一种情况,列表中项目的值决定了哪个视图类被实例化并填充到容器视图中。

【问题讨论】:

    标签: ember.js


    【解决方案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')
    });
    

    (在这里,为了更清楚,我在视图中为项目添加了别名)

    然后,您需要与 kinds 一样多的模板。 例如:如果您在[valid, invalid] 中有kind 的值,您将有两个模板:valid_item_view.handlebarsinvalid_item_view.handlebars

    【讨论】:

    • 迈克,谢谢!在这种情况下,我在第一页上出现了多个初始入口点情况,其中每条路径本身几乎就是一个完整的应用程序,有许多子页面。因此,为了概念清晰,我将其保留为逻辑上不同且名称清晰的视图,每个视图都有自己的模板。但是您的建议会很有效-感谢您展示如何。无论如何,由于新的路由器的东西,设计正在重做。 Ember 中的好东西太多了 :=)
    【解决方案2】:
    App = Ember.Application.create();
    
    App.TestView = Ember.View.extend({ ... });
    
    App["TestView"].create();
    

    【讨论】:

    • App.get('TestView') 也可以。我认为这没什么区别,但也许只是更“emberist”
    • 嗯,也许吧,虽然我们为什么不使用 App.set("TestView", Ember.View.extend({ ... }))?
    猜你喜欢
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    • 2016-11-19
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多