Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2020, 19:08   #1
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию Nodejs express-handlebars версия пакета 5.1.0, встроенные helpers lookup

Использую Nodejs, express, express-handlebars версия пакета 5.1.0

В express-handlebars используется последняя на данный момент версия "handlebars": "^4.7.6"

Долго мучился с нативными (встроенные) helpers, особенно с lookup

В итоге пришел к выводу, что либо я что-то не так делаю фундаментально на уровне подключения express-handlebars либо сам express-handlebars не работает с "handlebars": "^4.7.6" так как нужно.

Потому что:
Пример официальный:

https://handlebarsjs.com/examples/bu...er-lookup.html

Никаких ошибок с у меня нет, код работает, работают другие нативные (встроенные) helpers

Сделал такое в качестве повторение указанного примера:


Код:
	app.get('/incoming',  function(req, res) {
		res.render('incoming', {
			user : req.user.toObject(),
			isIncoming: true,
			obj : {
				people: ["Nils", "Yehuda"],
				cities: [
					"Darmstadt",
					"San Francisco",
				]
			}
		});
	});

wiews/incoming.hbs:

Код:
    {{#each obj.people }}
    {{.}} lives in {{lookup ../cities @index}}
    {{/each}}
В итоге получилось в выводе:
"Nils lives in Yehuda lives in"

А предпологалось как в примере:
"Nils lives in Darmstadt
Yehuda lives in San Francisco"

Т.е. интересующий меня участок {{lookup ../cities @index}} не работает


Попробовал вывести отдельно массивы, убедиться что они доступны оба :

Код:
<br>-
{{#each obj.people}}
   {{.}} 
{{/each}}
<br>
{{#each obj.cities}}
   {{.}} 
{{/each}}
Вывод:

"Nils Yehuda
Darmstadt San Francisco"

Массивы выводятся, они реально есть.

Попробовал сделать так, переопределить obj.people в people, для большего соответствия примеру:

Код:
{{#with obj.people as |people|}}
    {{#each obj.people }}
    {{.}} lives in {{lookup ../cities @index}}
    {{/each}}
 {{/with}}
Результат не изменился.

Что я не так делаю?
Illusiony вне форума Ответить с цитированием
Старый 27.08.2020, 11:59   #2
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

C помощью собственного хелпера выяснил, что запись ../cities не является массивом

Если же вставить {{lookup people @index}} этот массив он видит

Получается, что конструкция ../ для поиска в том же месте не работает почему то
Illusiony вне форума Ответить с цитированием
Старый 27.08.2020, 13:42   #3
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Оказалось все просто:

{{lookup ../obj.cities @index}}
вместо
{{lookup ../cities @index}}

Тему можно закрывать
Illusiony вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
HTC: встроенные и съемные аккумуляторы hxt Компьютерное железо 1 29.11.2013 22:36
Не работают встроенные функции Sergo4 Microsoft Office Excel 11 10.12.2010 18:35
HP Pavilion dv9000 встроенные микрофоны udpflood Компьютерное железо 1 09.07.2009 08:23
Встроенные участники безопасности Баламут Win Api 2 01.02.2009 14:20
Почему лицензионная версия продукта дороже чем пиратская версия продукта? multik Свободное общение 13 13.07.2008 14:40