我的rails应用程序正在向我的页面发送一个大型JSON结构,其中包含如下元素:
"nutrient_contributions": {
"Vitamin K": [
[
"Broccoli (raw)",
"92.46 mcg"
],
[
"ginger - ground",
"0.04 mcg"
]
],
"Vitamin B-6": [
[
"pepper - cayenne",
"0.13 mg"
],
[
"ginger - ground",
"0.03 mg"
]
]
}使用敲除,我只想将其中一个哈希元素转换为HTML表。在下面的示例中,th与'text: display_nutrient'一起呈现为Vitamin B-6;我认为我应该能够将display_nutrient用作哈希键,这是否错误?
%table
%thead
%tr
%th{colspan: 2, data: { bind: 'text: display_nutrient' }}
%tr
%th Ingredient Name
%th Nutrient Value
%tbody{data: { bind: 'foreach: $root.recipe().nutrient_contributions()[display_nutrient]()' }}
%tr
%td{data: { bind: 'text: shift()' }}
%td{data: { bind: 'text: shift()' }}使用javascript控制台,我可以看到我的数据不是像简单的JSON那样被加载,而是被转换成一个对象。
> window.my_recipe_view_model.recipe().nutrient_contributions()
Object {Vitam B-6: function, Vitamin K: function…}
> window.my_recipe_view_model.recipe().nutrient_contributions()['Vitamin K']()
[
Array[2]
0: "Broccoli (raw)"
1: "92.46 mcg"
length: 2
__proto__: Array[0]
,
Array[2]
0: "ginger - ground"
1: "0.04 mcg"
length: 2
__proto__: Array[0]
]所以,百万美元的问题是-我做错了什么?
发布于 2013-11-30 18:40:58
如果您的display_nutrient属性是ko.observable,则需要在foreach绑定表达式中展开它,并将其作为函数调用:
data-bind='foreach: $root.recipe().nutrient_contributions()[display_nutrient()]()' 注意()后面的display_nutrient。
演示:码页
https://stackoverflow.com/questions/20295930
复制相似问题