如何在Handlebar中迭代JSONArray时使用索引?

时间:2018-02-26 14:44:50

标签: json ember.js handlebars.js

我试图在不同的情况下显示adultJsonArr的详细信息,我希望在没有编写冗长代码的情况下将其保存在操作中。

我不知道如何在迭代时使用索引,我尝试了第5行但是没有用(@index也无法为我做的工作)。

有关如何保存对adultJsonArr中输入所做更改的任何建议

1.<form> 
2.   {{#each adultJsonArr as |adultTravellerDetails index|}}
3.    <div id="adult_form{{index}}">
4.      Adult{{index}}: 
5.      <input type="text" value="{{adultJsonArr.[index].traveller_name}}" required> 
6.      <input type="dob" value="{{adultTravellerDetails.traveller_dob}}">
7.      <input type="text" value="{{adultTravellerDetails.traveller_gender}}" required>
8.    </div>
9.   {{/each}}
10.  <div {{action "confirmTravellerUpdate" adultJsonArr }}>
11.     {{mdl-button text='submit'}}
12.  </div>
13.</form>

3 个答案:

答案 0 :(得分:0)

您可以将{{adultJsonArr.[index].traveller_name}}替换为{{adultTravellerDetails.traveller_name}}

答案 1 :(得分:0)

如果您想从阵列中访问某个元素,则不应在模板中执行此操作。 ember开发者很难这样做,因为它可能会给模板带来很多逻辑。请使用计算属性或帮助程序从集合中检索元素。

E.g。您可以创建一个辅助函数来接收集合和索引并返回所需的项目。

import { helper } from '@ember/component/helper';

export function colItem(params) {
  return params[0][params[1]];
}

export default helper(colItem);

在你的模板中:

{{helper-name collection 5}}

但请记住,为此你需要一个数组来工作。如果您想访问其他集合中的项目,则必须相应地处理此项目。

答案 2 :(得分:0)

索引应该仅用于显示目的。无需在adultJsonArr的当前索引中查找内容,因为您已有权访问adultTravellerDetails

话虽如此,如果你真的有一些用例,你需要在当前索引处查找数组的值,(或者你可能还有一些其他带元数据的排序数组要查找通过索引?)你可以这样做:

{{get adultJsonArr (concat index ".traveller_name")}}

我们正在构建concat get的路径,以便adultJsonArr查找test <- array(dim = c(3,5,7)) test[1,,] <- 1 test[2,,] <- 10 test[3,,] <- 100 vec <- c(1,2,3) 。这感觉有点hacky,但它确实有效。