Javascript 如何访问余烬模板中的阵列位置?
我在Ember做一件简单的事情时遇到了一些挫折。Javascript 如何访问余烬模板中的阵列位置?,javascript,ember.js,each,handlebars.js,Javascript,Ember.js,Each,Handlebars.js,我在Ember做一件简单的事情时遇到了一些挫折。 我知道所有的混乱都来自于将逻辑从模板中分离出来,但我认为我试图实现的目标并没有那么昂贵。 我有一个模型,它返回一个项目列表,这些项目有一个相关属性,根据该属性的值是否重复,模板应该显示一些内容。 我返回的数据应如下所示: [{id :0, text:"Element 0", nested_property: { value:'Value 1' } },{id :1, text:"Element 1", nested_p
我知道所有的混乱都来自于将逻辑从模板中分离出来,但我认为我试图实现的目标并没有那么昂贵。
我有一个模型,它返回一个项目列表,这些项目有一个相关属性,根据该属性的值是否重复,模板应该显示一些内容。
我返回的数据应如下所示:
[{id :0,
text:"Element 0",
nested_property: {
value:'Value 1'
}
},{id :1,
text:"Element 1",
nested_property: {
value:'Value 1'
}
},{id :2,
text:"Element 2",
nested_property: {
value:'Value 2'
}
},{id :3,
text:"Element 3",
nested_property: {
value:'Value 2'
}
},{id :4,
text:"Element 4",
nested_property: {
value:'Value 1'
}
}]
我想要制作的是这样的东西:
[{id :0,
text:"Element 0",
nested_property: {
value:'Value 1'
}
},{id :1,
text:"Element 1",
nested_property: {
value:'Value 1'
}
},{id :2,
text:"Element 2",
nested_property: {
value:'Value 2'
}
},{id :3,
text:"Element 3",
nested_property: {
value:'Value 2'
}
},{id :4,
text:"Element 4",
nested_property: {
value:'Value 1'
}
}]
-
值1
元素0
-
要素1
-
价值2
要素2
-
要素3
-
值1
要素4
我的建议是在javascript中这样做,在javascript中您可以使用全套工具
余烬的方法是做一个计算,它将按摩您的数据进行演示
binData: Ember.computed('origData', function() {
let origData = this.get('origData');
// use Ember collection utilities, lodash, whatever here
// to bin your data and make it an easy object to loop in hbs
}
现在,您可以在模板内部使用
binData
。而且,由于余烬的魔力,它将随时更新binData 如果要迭代数组模型,请执行以下操作:
{{#each model as |item|}}
{{index}}
{{item.text}}
{{item.nested_property.value}}
{{/each}}
如果要获取阵列模型的最后一个元素,请执行以下操作:
{{model.lastObject}}
{{get model '2'}}
如果要获取阵列模型的特定元素,请执行以下操作:
{{model.lastObject}}
{{get model '2'}}
一切都很简单:)
另外,您需要使用最新的余烬来完成此任务
非常感谢@Bek的回答,因为它让我走上了正确的道路。我写在这里只是为了谷歌人。
使用第三个选项将成为作业的一部分,并且要在余烬标记中使用它,必须在括号之间完成:
{{ log (get model 1) }}
因为我需要的是访问动态部分和固定字符串的串联以指示对象属性,所以我必须使用:{{ log (get model (concat variable 'fixed.string')) }}
至少,但不是最后一次。。。因为我需要在实际位置之前访问该位置,所以我应该在其中使用数学运算。没有内置的帮助程序来获取它,所以我在这里找到了它,最终的代码是这样的:{{#each model as |item index|}}
{{ log (get model (concat (math key '-' 1) 'nested_property.value')) }}
{{/each}}
你差点救了我一天。。。我需要将嵌套属性的值作为参数传递给块。根据您的最后一个建议,我可以在日志帮助器上获得一个“固定”位置值:{{log(get model 1.nested_property.value)}}最好是“混合”变量和静态部分以访问index-1元素,类似这样:{{log(get model(key-1.nested_property.value)}如果你告诉我如何将它传递给一个参数,我的意思是:{{component parameter=(get model(key-1).nested_property.value)}因为你的问题似乎已经解决了,请你把你的答案标记为已接受,这样这个问题就不会再显示为未回答了?谢谢