SailsJs Handlebar辅助函数不起作用

时间:2016-01-30 17:41:56

标签: express handlebars.js sails.js

我使用Handlebars作为Sailsjs的模板引擎。基本模板工作正常但我无法找到使用Handlebars辅助函数的方法,甚至内置函数都不可用。

我已设法使用以下文章解决部分问题。 https://github.com/balderdashy/sails/issues/2414

我还在config文件夹中注册了helpers.js,但是我无法调用任何自定义,内置块或迭代辅助函数。

解决帮助问题的任何指针都会有所帮助。 Sailsjs verion - 0.11.4 车把版 - 4.0.5

我在上面的文件中注册了辅助函数,如下所示:

Handlebars.registerHelper('help', function() {
    return "help22";
});

我在模板中也是这样说的:

{{{help}}}

知道它为什么不渲染?

2 个答案:

答案 0 :(得分:2)

好的,经过几个小时的尝试,我想出了一个解决方案:

您可以将此行添加到config / helpers.js

的末尾
module.exports = Handlebars.helpers;

在view.js内部:

module.exports.views = {
  engine: 'handlebars',
  layout: 'layout',
  partials: 'partials',
  helpers: require('./helpers')
};

它会起作用。

答案 1 :(得分:0)

以上解决方案对我不起作用 - 我收到错误"句柄未定义" 因为我没有检查此链接 - {{3} }

我必须在/config/helpers.js

中添加 { "a": "test_a", "b": "test_b", "date": "20170711", "data": "testing" }

全部放在一起:

编辑文件/config/views.js

Handlebars = require('handlebars');

创建文件/config/helpers.js

module.exports.views = {
      engine: 'handlebars',
      extension: 'html',      // optional
      layout: 'layouts/main', // optional, will load /views/layouts/main.html
      partials: 'partials',   // optional, will load partials from /views/partials/
      helpers: require('./helpers') // <-- this is it
};

在模板中,我使用Handlebars = require('handlebars'); module.exports = Handlebars.helpers; Handlebars.registerHelper('stringify', function(obj) { var json = {}, prop, tmp; for (prop in obj) { if (obj.hasOwnProperty(prop)) { try { tmp = JSON.stringify(obj[prop]); json[prop] = obj[prop]; } catch (e) { json[prop] = '[CAN NOT stringify]'; } } } return JSON.stringify(json, null, 2); });

Sails v0.12.13

上进行测试