#nodejs #express
проблема не выводит виджет (partial) в шаблон houme houmeДобро пожаловать на сайт турфирмы
{{>weather}} server function getWeatherData(){ return { locations: [{ name:'Protland', forecatUrl: 'http://www.wunderground.com/US/OR/Portland.html', iconUrl: 'http://..icons-ak.wxug.com/i/c/k/cloudy.gif', weather:'Cloudy', temp: '54.1 F (12.3 C)' }, { name: 'Band', forecatUrl: 'http://www.wunderground.com/US/OR/Band.html', iconUrl: 'http://..icons-ak.wxug.com/i/c/k/rain.gif', weather:'Rain', temp: '55.0 F (12.8 C)' }, { name: 'Minsanita', forecatUrl: 'http://www.wunderground.com/US/OR/Minzanita.html', iconUrl: 'http://..icons-ak.wxug.com/i/c/k/rain.gif', weather:'Rain', temp: '55.0 F (12.8 C)' }] }; } //Виджет app.use(function(req, res, next){ if (!res.locals.partials) res.locals.partials = {}; res.locals.partials.weatherContext = getWeatherData(); next(); }); views/partial/weather{{#each partials.weatherContext.locations}}**Это пример с учебника. Почему не работает не пойму. Шаблон с ссылкой выводит нормально все что находиться в блоке each вообще не выводит.{{/each}} Источник: Weather Ground{{name}}
{{weather}}, {{temp}}
Ответы
Ответ 1
Уххх, как весело:) Вы используете шаблонный менеджер handlebars. Обычный пакет handlebars у Вас уже 99% стоит, но сверху еще надо сделать вот так npm i hbs Добавляем в какую-нибудь корневую для рэндэров middleware следующий код const hbs = require('hbs'); // лучше вне middleware // папка с partials!! hbs.registerPartial('weather', fs.readFileSync(__dirname + '/../views/partials/weather.hbs', 'utf8')); Обратите внимание на строку с путем - начинается со слеша, задается относительно файла, в котором находится. После указанных выше манипуляций у меня Ваш пример, хоть чуть и упрощенный стартанул. Если Вам не удастся воспроизвести по этому ответу, выложу код на гит, или дополню ответ где надо.Ответ 2
Попробуйте так: app.use(function(req, res, next){ if (!res.locals.partials) res.locals.partials = {}; res.locals.partials.weatherContext = getWeatherData(); next(); }); Поставьте перед началом маршрутизации: app.get('/', function (req, res) { res.render('home'); });
Комментариев нет:
Отправить комментарий