2015-04-10 7 views
0

Я реализовал наблюдаемый словарь в моем проекте. У меня довольно сложный хеш, но я не уверен, как обращаться к ключам.knockout.js observableDictionary complex hash

Что делать, если я имел следующий словарь и хотел получить цвет волос ?:

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> 

Любая помощь будет принята с благодарностью.

+0

Является observableDictionary от https://github.com/jamesfoster/knockout.observableDictionary? – tcigrand

+0

Hi @AnotherDev, Да. –

ответ

0

Вы могли бы сделать это несколько различных способов

1.With это вы можете получить доступ все ключи и значения вложенного объекта

<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' 
    } 
}; 

 Смежные вопросы

  • Нет связанных вопросов^_^