我们严重依赖 ember 组件。最初,我们将所有与组件关联的 hbs 模板都写在“templates/components”文件夹中,但是由于组件的数量在增长,我们希望提供更多的结构并在 components 文件夹的子文件夹中定义模板。这样做时,ember 会抱怨
您正在 [SUBFOLDER] 命名空间中寻找 [XYZ] 组件,但找不到命名空间
我编译的模板如下所示:
Ember.TEMPLATES["components/answers/checkbox-answer"] = ...
但是,如果我要进行以下更改,事情就会奏效:
Ember.TEMPLATES["components/checkbox-answer"] = ...
我现在的工作是像这样修改 gruntfile
emberTemplates: {
options: {
templateName: function(sourceFile) {
var fileName = sourceFile.replace(/.*\/templates\//, '');
if((/^components\//).test(fileName)){
/*if component hbs files are defined within sub-folder, remove the subfolder part*/
return "components"+fileName.substr(fileName.lastIndexOf('/'));
}
return sourceFile.replace(/.*\/templates\//, '');
}
}
我不确定这是余烬还是别的什么。但是把问题放在那里,希望有更好的解决方案。
更新 似乎问题是由于我们加载组件的方式引起的。我们基本上使用的是辅助函数,它根据我们传递给它的参数加载组件,例如:
Ember.Handlebars.helpers[componentToLoad].call(this, options);
我检查了 Ember.Handlebars.helpers,它似乎没有在组件内的任何文件夹中定义的组件。