knockout.js observableDictionary复杂哈希

时间:2015-04-10 19:09:58

标签: knockout.js ko.observablearray

我在我的项目中实现了observableDictionary。我有一个相当复杂的哈希,但我不确定如何访问密钥。

如果我有以下字典并且想要获得头发颜色怎么办?

var person = {
   name: ‘Joe Bloggs’,
   height: 180,
   hair: {
      color: ‘brown’,
      length: ‘long’
   }
}

基于github示例,我认为它与此类似:

<div data-bind=”foreach: person.items”>
   <div data-bind=”if: hair”>
     <div data-bind=” foreach: value.items”>
          <span data-bind=”text: $data.color”></span>
      </div>
   </div>
</div>

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

你可以用几种不同的方式做到这一点

1.使用此功能,您可以访问嵌套对象的所有键和值

<div data-bind="foreach: person.items">
   <div data-bind="if:key()=='hair'">
     <div data-bind="foreach: value().items">
           <div>
               <span data-bind="text:key"></span>
               <span data-bind="text:value"></span>
           </div>
      </div>
   </div>
</div>

使用

var person = {
   name: 'Joe Bloggs',
   height: 180,
   hair: new ko.observableDictionary({
      color: 'brown',
      length: 'long'
   });
};

2.如果您只想获得头发颜色属性,这可能会更容易

<div data-bind="foreach: person.items">
   <div data-bind="if:key()=='hair'">
          <span data-bind="text: value().color"></span>
   </div>
</div>

使用

var person = {
   name: 'Joe Bloggs',
   height: 180,
   hair: {
      color: 'brown',
      length: 'long'
   }
};