私たちは、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 を確認したところ、コンポーネント内の任意のフォルダー内で定義されたコンポーネントがないようです。