meteor - 如何访问 Handlebars.js 数组中的最终元素?
问题描述
给定以下数据结构:
{
"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
's内部[]
不返回任何值,但value.length
在数组外部渲染工作正常。
我尝试在数组中使用@first
和@last
,但这些似乎也不起作用。
解决方案
正如已经指出的,您可以使用模板助手轻松解决此问题:
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>
推荐阅读
- javascript - 有选择地返回 forkJoin
- python - 如何根据长宽比计算矩形的缺失角
- html - 为什么 Bootstrap 导航栏在响应模式下很好,但在智能手机中显示不正确
- latex - 强制在 LaTeX 中放置图形,而不以任何方式影响格式
- java - 检查列表B中存在的列表A中元素的数量 java
- vert.x - 在vertx中,首先netty在池化直接缓冲区中读取数据,然后vertx将缓冲区转移到非池化堆缓冲区,为什么?
- python - 无法通过 Python 获取 Web 表数据
- angular - 尝试从 service.ts 角度调用应用程序组件时,观察者功能在应用程序组件中不起作用
- javascript - 如何在带有 Flask 的 javascript 脚本中使用 fetch api 的结果
- angularjs - 如何在离子元素的Angular中同一组件的不同形式中使用多次自动对焦属性?