我将代码重构为组件,我发现组件层次结构运行良好。我遇到的唯一问题是模板命名要求。 我希望能够在组件目录中拥有多个模板,我可以动态查找。下面是一个如何工作的例子,而不是:
side-bar/
|__component.js
|__template.hbs
|__sidebar-links/
|_component.js
|_template.hbs
|_sidebar-drawer/
|_component.js
|_template-one.hbs
|_template-two.hbs
|_...
所以 - 作为简化,我的侧边栏抽屉组件可以使用许多模板(作为部分,或者有时动态设置layout
属性的子视图),根据链接交换它们。我非常希望将它们组合在一起。相反,为了做这样的事情,我强迫他们将它们保存在/app/templates
目录中,或者将它们视为组件。
我想我可以通过修改模板编译器(找到[here])来实现这个目的:
app._podTemplatePatterns = function() {
return this.registry.extensionsForType('template').map(function(extension) {
return new RegExp(extension + '$');
});
};
这会编译所有具有hbs
扩展名的模板,无论位于何处。但是我无法查找它们 - 大概我也需要对解析器进行子类化。我可以开始沿着这条路走下去,但有几个问题:
_podTemplatePatterns
?