2

我们严重依赖 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,它似乎没有在组件内的任何文件夹中定义的组件。

4

0 回答 0