2015-11-17 3 views
0

Я посмотрел на этот пост, но он не приходит с решением: Register Assemble Handlebars HelpersРегистрация собрать рули-хелперы с рули Экспресс

Я хочу, чтобы зарегистрировать все хелперов в https://github.com/assemble/handlebars-helpers к моему экспресс 4 приложения под управлением Express имеет рули.

До сих пор я попытался это, но помощники не получают регистрации:

var express = require('express') 
    , app = express() 
    , exphbs = require('express-handlebars'); 

var hbs = exphbs.create({ 
    extname: '.hbs', 
    defaultLayout: 'default', 
    layoutsDir: './lib/templates/layouts', 
    partialsDir: './lib/templates/partials' 
    helpers: require('handlebars-helpers') // Not registering correctly 
}); 

Как эта библиотека работает? Возможно, я ошибаюсь. Вы должны регистрировать один за раз или можете загрузить все помощники?

ответ

0

Попробуйте это:

var express = require('express') 
 
    , app = express() 
 
    , exphbs = require('express-handlebars') 
 
    , hbsHelpers = require('handlebars-helpers'); 
 

 
var hbs = exphbs.create({ 
 
    //code... 
 
}); 
 
hbsHelpers.register(hbs.handlebars, {});

+0

Спасибо за Ваш ответ @Macgyver Martins. Это сработало отлично. Странно, что это не будет указано в документации, так как многие используют express-handlebars. – ChrisRich

+0

https://github.com/assemble/handlebars-helpers/issues/209 – ChrisRich

+0

[dev branch] (https://github.com/assemble/handlebars-helpers/tree/dev) составляет 143 записи, опережая мастера. Я рекомендую взглянуть на эту ветку. в ближайшие дни мы будем объединяться для освоения – jonschlinkert

0

Это работает для меня:

В app.js:

var exphbs = require('express-handlebars'); 

var hbs = exphbs.create({ 
    extname: '.hbs', 
    defaultLayout: 'default', 
    layoutsDir: './lib/templates/layouts', 
    partialsDir: './lib/templates/partials' 
    helpers: require('handlebars-helpers').helpers 
}); 

app.engine('hbs', hbs.engine); 

В рули-helpers.js:

var register = function (Handlebars) { 
    var helpers = { 
     formatCurrency: function (currency) { 
      return currency.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"); 
     }, 
     format_date: function (date, format) { 
      return moment(date).format(format); 
     }, 
     ... 
    }; 

    if (Handlebars && typeof Handlebars.registerHelper === "function") { 
     for (var prop in helpers) { 
      Handlebars.registerHelper(prop, helpers[prop]); 
     } 
    } else { 
     return helpers; 
    } 

}; 

module.exports.register = register; 
module.exports.helpers = register(null); 

В просмотров:

{{formatCurrency settings.phoneNumber}}