首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >knockout.js -在数组的散列中遍历一个数组

knockout.js -在数组的散列中遍历一个数组
EN

Stack Overflow用户
提问于 2013-11-30 02:48:16
回答 1查看 139关注 0票数 1

我的rails应用程序正在向我的页面发送一个大型JSON结构,其中包含如下元素:

代码语言:javascript
复制
"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用作哈希键,这是否错误?

代码语言:javascript
复制
%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那样被加载,而是被转换成一个对象。

代码语言:javascript
复制
> 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]
  ]

所以,百万美元的问题是-我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-30 18:40:58

如果您的display_nutrient属性是ko.observable,则需要在foreach绑定表达式中展开它,并将其作为函数调用:

代码语言:javascript
复制
data-bind='foreach: $root.recipe().nutrient_contributions()[display_nutrient()]()' 

注意()后面的display_nutrient

演示:码页

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20295930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档