2

私たちは、ember コンポーネントに大きく依存しています。最初は、「templates/components」フォルダー内に記述されたコンポーネントに関連付けられたすべての hbs テンプレートがありましたが、コンポーネントの数が増えているため、より多くの構造を提供し、コンポーネント フォルダー内のサブフォルダー内のテンプレートを定義したいと考えました。そうするとき、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