Как я могу связать выбранный текст выбора полета с атрибутом объекта с нокаутом JS или чем -то еще?
-
24-10-2019 - |
Вопрос
У меня есть выборочная коробка, которую я заполняю списком JSON, возвращенным из хранимой процедуры, но, к сожалению, когда я обновляю связанный объект, мне нужно вернуть выбранные текст протяжения, нет Выбранный индекс, как можно подумать (плохой дизайн базы данных, но я сейчас застрял с ним и не могу его изменить).
У кого -нибудь есть идеи, что я могу сделать, чтобы сохранить Выбранный текст Сингнируется с соответствующим атрибутом объекта JavaScript?
Решение
Так что да, ты получил то, что я получил. Используйте текст в качестве значения для параметров выбора, а не используйте индекс. Значение на самом деле должно быть чем -то полезным, я не могу придумать ни одного случая, когда я когда -либо использовал индекс. Число наверняка, но число, которое каким -то образом связано с моделями приложения (например, идентификатор из базы данных), а не с количеством элементов в поле выбора.
Отличная работа.
Другие советы
Вы можете сохранить и как значение, и текст, если вы используете подписчики. Например, если каждый из ваших объектов JavaScript выглядит так:
var optionObject = {
text:"text1"
value: 1
}
Тогда ваше привязка будет выглядеть как:
Где «OptionsObjects» - это набор опционов, а SelectedOption имеет два наблюдаемых свойства: текст и значение. Наконец, вы подпишитесь на свойство значения SelectedOption:
viewModel.selectedOption.value.subscribe(function(newValue){
var optionText = viewModel.OptionsObjects[newValue].text;
viewModel.selectedOption.text(optionText);
});
Затем, если вы хотите увидеть новый выбранный текст опции при изменении значения, вы можете иметь привязку следующим образом:
<span data-bind:"text:selectedOption.text"></span>
В вашем конкретном случае вы вернете selectedOption.text ().