私はJaggery.js
Web アプリを作成caramel
し、MVC フレームワークとして使用しています。Caramel はハンドルバーをレンダリング エンジンとして使用するため、ハンドルバーによって提供される組み込みヘルパー ( など) を使用できます{{#each}}, {{#if}}
。
しかし、カスタムヘルパーを作成してキャラメルに登録するにはどうすればよいですか?
これに関するサンプルはありますか?
前もって感謝します!
私はJaggery.js
Web アプリを作成caramel
し、MVC フレームワークとして使用しています。Caramel はハンドルバーをレンダリング エンジンとして使用するため、ハンドルバーによって提供される組み込みヘルパー ( など) を使用できます{{#each}}, {{#if}}
。
しかし、カスタムヘルパーを作成してキャラメルに登録するにはどうすればよいですか?
これに関するサンプルはありますか?
前もって感謝します!
キャラメルでハンドルバーヘルパーを登録する方法を見つけましたが、それは機能しますが、通常の正しい解決策であるかどうかはわかりません。
私が行っていたのは、ヘルパーを caramel theme.js (jaggeryapps\myapp\themes\mytheme\theme.js) に登録することです。コードは次のようになります。
var engine = caramel.engine('handlebars', (function () {
return {
partials: function (Handlebars) {
var theme = caramel.theme();
var partials = function (file) {
(function register(prefix, file) {
var i, length, name, files;
if (file.isDirectory()) {
files = file.listFiles();
length = files.length;
for (i = 0; i < length; i++) {
file = files[i];
register(prefix ? prefix + '.' + file.getName() : file.getName(), file);
}
} else {
name = file.getName();
if (name.substring(name.length - 4) !== '.hbs') {
return;
}
file.open('r');
Handlebars.registerPartial(prefix.substring(0, prefix.length - 4), file.readAll());
file.close();
}
})('', file);
};
partials(new File(theme.resolve('partials')));
Handlebars.registerHelper('my-for', function(n, block) {
var ret = '';
for(var i = 0; i < n; ++i) {
ret += block.fn(i);
}
return ret;
});
},
};
}()));