繁体   English   中英

焦糖色如何注册车把帮手?

[英]Caramel how to register handlebars helper?

我正在使用Jaggery.js编写网络应用程序,并使用caramel作为MVC框架。 Caramel使用Handlebars作为渲染引擎,因此我们可以使用Handlebars提供的任何内置帮助器,例如{{#each}}, {{#if}}等。

但是我该如何编写我的自定义帮助程序并在焦糖中注册,以便焦糖可以在模板中使用它进行渲染?

有样品吗?

提前致谢!

我找到了一种在焦糖色中注册车把帮手的方法,它可以工作,但是不确定是否是正确的解决方案。

我正在做的是在焦糖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;
            });

        },
    };
}()));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM