#javascript #json #handlebars.js
#javascript #json #handlebars.js
Вопрос:
У меня есть два набора данных — один определяет включенные элементы для страницы, другой — больший набор данных с более глубокими данными. Но для этого допустим, у нас есть это — первый набор данных JSON (назовем его page.json)
{
"title": "pageTitle here",
"description": "Content here",
"items": [
{
"id": 14,
"name": "Bob"
},
{
"id": 11,
"name": "Dave"
},
{
"id": 12,
"name": "Fred"
},
]
}
Второй набор данных JSON (назовем его data.json) содержит
[
{
"id": 14
"name": "Bob Matthews",
"description": "Some description here about Bob",
"age": 24,
"location": "Sydney"
},
{
"id": 11
"name": "Dave Smith",
"description": "Some description here about Dave",
"age": 23,
"location": "Sydney"
},
{
"id": 12
"name": "Fred Williams",
"description": "Some description here about Fred",
"age": 42,
"location": "Sydney"
}
]
Теперь в моих шаблонах у меня есть что-то вроде
<!-- loop through each person for this page from page.json -->
{{#each page}}
<!-- lets find the data for this person from the data.json and display it -->
{{#compare page.id data.id}}
<h2>{{data.name}}</h2>
<p>Description {{data.description}}</p>
<p>Age {{data.age}}</p>
<p>Location {{data.location}}
{{/compare}}
{{/each}}
Но это не работает … есть ли какой-нибудь способ без создания пользовательского помощника handlebar для поиска (и последующего отображения данных) элемента из массива во 2-м источнике данных JSON?
Примечание: это для проекта с использованием Assembly .io amp; Grunt для создания статических страниц из наборов данных JSON
Спасибо
Комментарии:
1. я знаю, что это не тот ответ, который вы ищете, но вы можете объединить данные перед вызовом шаблона
2. Да, это не тот ответ, который мне нужен, но хорошая идея — рассмотрю это, спасибо
3. Глупый вопрос — мне нужно было бы сделать это в grunt.js файл правильный? хм
4. Зависит от того, чего вы пытаетесь достичь. Я предположил, что это все javascript. Я использую Lodash, но есть и другие методы для объединения подобных данных. jsbin.com/heqis/3/edit
5. Да, это JS, для создания статических страниц из различных источников данных json с помощью Assembly. ввод-вывод и выполнение
Ответ №1:
Я не тестировал это, но вы пробовали перебирать список, data.json
чтобы найти элемент, соответствующий текущему элементу page.json
. Возможно, потребуется некоторая доработка кода, поскольку я действительно имел дело только с YAML Front Matter, и я не знаком с тем, как использовать файлы * .json .
{{#each page.items}} <!-- loop through each person for this page from page.json -->
{{#each data}} <!-- loop through each person in list from data.json -->
<!-- In here '../page' refers to the page in previous scope -->
<!-- and 'this' refers to the current element in data. -->
<!-- lets find the data for this person from the data.json and display it -->
{{#compare ../page.id this.id}}
<h2>{{this.name}}</h2>
<p>Description {{this.description}}</p>
<p>Age {{this.age}}</p>
<p>Location {{this.location}}
{{/compare}}
{{/each}} <!-- end data loop -->
{{/each}} <!-- end page.items loop -->