2013-09-09 2 views
1

Вот отрывок из моей JSONОтображение выбранного значения в выпадающем списке с помощью Нокаут

... "PreferredLanguage": "итальянский", "PreferredLanguageDisplay": "Italiano", "Языки": [{ "Selected ": false," Text ":" English (UK) "," Value ":" 0 "}, {" Selected ": false," Text ":" English (US) "," Value ":" 1 "} , { "Выбранные": правда, "Текст": "Italiano", "Значение": "2"}, { "Selected" ложь "Текст": "Вход", "Значение": "3"}]}

Теперь я связывание выпадающего списка в Knockout для Languages таким образом:

<div class="item"> 
         <select data-bind="foreach: Languages(), value: PreferredLanguage"> 
          <option data-bind="text: Text"></option> 
         </select> 
        </div> 

это Я работаю, но я пытаюсь сделать еще одну вещь. По умолчанию выбрано первое значение в массиве Languages, но я хочу, чтобы был выбран вариант, текст которого соответствует PreferredLanguageDisplay.

Я пробовал использовать привязку if, но не мог этого добиться. Есть идеи?

+3

Вы должны использовать параметры связывания – Anders

ответ

1

Вы должны использовать опции связывания следующим образом:

Вид:

<select data-bind="options: Languages, value: PreferredLanguage, optionsText: 'Text', optionsValue : 'Value'"> 
</select> 

Вид модели:

var vm = { 

    "PreferredLanguage": ko.observable('2'), // Value of Italiano 
    "PreferredLanguageDisplay": "Italiano", 
     "Languages": [{ 
     "Text": "English (UK)", 
      "Value": "0" 
    }, { 
     "Text": "English (US)", 
      "Value": "1" 
    }, { 
     "Text": "Italiano", 
      "Value": "2" 
    }, { 
     "Text": "Français", 
      "Value": "3" 
    }], 

}; 
ko.applyBindings(vm); 

See fiddle