Подтвердить что ты не робот

KnockoutJS Выберите параметры и выбранное значение

Аналогичный вопрос: Выберите начальное значение элемента

У меня проблема с настройкой начального значения элемента select. У меня в основном есть список исходных данных, поступающих с сервера, чтобы заполнить выпадающий список, и я хочу, чтобы выбранное значение представляло то, что должно быть выбрано из объекта.

Поскольку выбранное значение модели данных не равно объектной ссылке в исходных данных, ничего не выбрано.

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

Есть ли более элегантное решение? Я просмотрел упрощенный пример с более подробной информацией... http://jsfiddle.net/hbrYM/14/

4b9b3361

Ответ 1

Как вы правильно догадались, ссылка selectedValue не соответствует, поэтому KO не выбирает этот элемент. Способ заставить это работать - не сохранять сложный объект в выбранном значении и вместо этого выбирать идентификатор, поскольку равенство примитивного типа может быть успешным и выбрано правильное значение.

http://jsfiddle.net/VLTFB/3/

Вам понадобится опция optionsValue для привязки опций (если это имеет смысл:)

<select data-bind="options: seedData,
                    optionsText: 'firstName',
                    optionsValue: 'ID',
                    value: data.selectedValue">

ИЗМЕНИТЬ

Как обсуждалось, вы можете повторно выбрать правильный элемент с вычисленным (непроверенным).

vm.currentlySelected = ko.computed(function () { 
   for (var i = 0; i < this.seedData().length; i += 1) {
       var data = this.seedData()[i];
       if (data.ID === this.selectedValue()) {
           return data;
       }
   }
   return null;
}, vm);

Надеюсь, что это поможет.