【发布时间】:2013-07-03 18:25:04
【问题描述】:
我正在使用 ember-rails 来处理把手编译,并且 rails 应用程序将有多个 Ember 应用程序(取决于用户所在的页面)。为了更好地处理文件管理,我想在每个应用程序的不同文件夹下组织模板。但是,我不想为了指定模板名称而为每个模板创建单独的视图。有没有一种好方法可以为每个应用程序覆盖 Ember.View,以便它始终在特定命名空间下查找模板?
【问题讨论】:
标签: ember.js
我正在使用 ember-rails 来处理把手编译,并且 rails 应用程序将有多个 Ember 应用程序(取决于用户所在的页面)。为了更好地处理文件管理,我想在每个应用程序的不同文件夹下组织模板。但是,我不想为了指定模板名称而为每个模板创建单独的视图。有没有一种好方法可以为每个应用程序覆盖 Ember.View,以便它始终在特定命名空间下查找模板?
【问题讨论】:
标签: ember.js
您可以覆盖模板解析器来完成此操作。其基本思想是确保像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 目录。
【讨论】: