0

私はJaggery.jsWeb アプリを作成caramelし、MVC フレームワークとして使用しています。Caramel はハンドルバーをレンダリング エンジンとして使用するため、ハンドルバーによって提供される組み込みヘルパー ( など) を使用できます{{#each}}, {{#if}}

しかし、カスタムヘルパーを作成してキャラメルに登録するにはどうすればよいですか?

これに関するサンプルはありますか?

前もって感謝します!

4

1 に答える 1

1

キャラメルでハンドルバーヘルパーを登録する方法を見つけましたが、それは機能しますが、通常の正しい解決策であるかどうかはわかりません。

私が行っていたのは、ヘルパーを 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;
            });

        },
    };
}()));
于 2014-11-14T09:09:50.660 に答える