注册组装把手助手

时间:2014-06-25 21:08:15

标签: javascript node.js handlebars.js assemble grunt-assemble

我正在努力做一些看似相对简单的事情来自Assemble文档以及我查看的其他回购,但出于某种原因,我在注册我的Handlebars助手时遇到了问题。帮手是帮助者>辅助-classgrid.js

module.exports.register = function (Handlebars, options, params)  { 
  Handlebars.register('classgrid', function (index, options)  { 
    gridclass: function (index, options) {
    if (index === 0 || index % 4 === 0) {
        return options.fn(this);
      }
    return options.inverse(this);
  };
};

我的gruntfile,其中config.helpers = helpers:

assemble: {
      options: {
        layoutdir: '<%= config.guts %>/templates/layouts/',
        assetsDir: '<%= grunt.config.get("assets_dir") %>',
        environmentIsProduction: '<%= grunt.config.get("environmentIsProduction") %>',
        environmentIsDev: '<%= grunt.config.get("environmentIsDev") %>',
        data: ['<%= config.content %>/**/*.json', '<%= grunt.config.get("environmentData") %>'],
        helpers: ['<%= config.helpers %>/helper-*.js']
      },
}

模板代码:

{{#classgrid @index}}
// do something here
{{/classgrid}}

现在,当我在Handlerbars模板中实现我的帮助程序并运行包含汇编任务的grunt任务时,我收到错误

Warning: Missing helper: 'classgrid' Use --force to continue.

我不确定我做错了什么,或者我是否必须为我的助手创建一个单独的NPM包,它似乎在汇编文档中提出。我看过这两个似乎正在做我想做的事情的回购

https://github.com/buildingblocks/bb-prototype-website/blob/master/Gruntfile.js https://github.com/ghost-town/layouts-example/blob/master/Gruntfile.js#L33

1 个答案:

答案 0 :(得分:4)

不确定这只是一个复制/粘贴问题,但上面的代码看起来不正确......这是应该有用的:

module.exports.register = function (Handlebars, opts, params)  { 
  Handlebars.registerHelper('classgrid', function (index, options)  { 
    if (index === 0 || index % 4 === 0) {
      return options.fn(this);
    }
    return options.inverse(this);
  });
};

我会尝试创建一个测试项目,以确保它正常工作。

修改:创建测试项目后,我发现您使用的是Handlebars.register而不是Handlebars.registerHelper。我已将代码更新为可用的解决方案。希望这会有所帮助。