【问题标题】:How to override Ember.View such that all templates are searched for under a namespace如何覆盖 Ember.View 以便在命名空间下搜索所有模板
【发布时间】:2013-07-03 18:25:04
【问题描述】:

我正在使用 ember-rails 来处理把手编译,并且 rails 应用程序将有多个 Ember 应用程序(取决于用户所在的页面)。为了更好地处理文件管理,我想在每个应用程序的不同文件夹下组织模板。但是,我不想为了指定模板名称而为每个模板创建单独的视图。有没有一种好方法可以为每个应用程序覆盖 Ember.View,以便它始终在特定命名空间下查找模板?

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    您可以覆盖模板解析器来完成此操作。其基本思想是确保像ember-rails这样的构建系统在表单中编译模板,

    Ember.TEMPLATES['namespace/foo/bar'] = ...
    

    然后您可以覆盖模板解析器以将该命名空间作为模板名称的前缀。

    App = Ember.Application.create({
      templateNamespace: 'initech',
    
      resolver: Ember.DefaultResolver.extend({
        resolveTemplate: function(parsedName) {
          parsedName.fullNameWithoutType = App.templateNamespace + '/' + parsedName.fullNameWithoutType;
          parsedName.name = App.templateNamespace + '/' + parsedName.name;
    
          return this._super(parsedName);
        }
      })
    
    });
    

    这是一个jsbin 示例。模板嵌入在示例中,但在您的情况下来自initech 目录。

    【讨论】:

    • 正是我想要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    相关资源
    最近更新 更多