Как я могу связать выбранный текст выбора полета с атрибутом объекта с нокаутом JS или чем -то еще?

StackOverflow https://stackoverflow.com/questions/4785481

Вопрос

У меня есть выборочная коробка, которую я заполняю списком 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 ().

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top