Учитывая следующую структуру данных:
{
"name" : "test",
"assetType" : "Home",
"value" : [
{
"value" : "999",
"date" : "10/03/2018"
},
{
"value" : "1234.56",
"date" : "10/04/2018"
}
]
}
Как я могу получить прямой доступ к первому и последнему элементу value
в Handlebars? Мой код:
<td>{{value.[0].value}}</td>
<td>{{value.[value.length - 1].value}}</td>
Первый оператор работает нормально, но я не могу понять, как получить доступ к последнему элементу. value.length
внутри []
не возвращает никакого значения, но рендеринг value.length
вне массива работает нормально.
Я пробовал использовать @first
и @last
в массиве, но они, похоже, тоже не работают.
🤔 А знаете ли вы, что...
Meteor - это современный фреймворк для разработки веб-приложений на JavaScript.
Как уже указывалось, вы можете легко решить эту проблему с помощью помощник по шаблону:
Template.myTemplate.helpers({
first (arr) {
return arr && arr[0]
},
last (arr) {
return arr && arr[arr.length - 1]
},
atIndex (arr, index) {
return arr && index >= 0 && index <= arr.length - 1 && arr[index]
}
})
Затем вы можете создать контекст с помощью #with
, где объект контекста является результатом помощников. Внутри этого контекста вы можете получить доступ к свойствам с помощью this
.
Доступ к значениям с именем value
будет выглядеть следующим образом:
<td>{{#with first value}}{{this.value}}{{/with}}</td>
<td>{{#with last value}}{{this.value}}{{/with}}</td>
<td>{{#with atIndex value 5}}{{this.value}}{{/with}}</td>