Как я могу привязать выделенный текст окна выбора к атрибуту объекта с помощью Knockout JS или чего-либо еще? - PullRequest
0 голосов
/ 24 января 2011

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

Есть ли у кого-нибудь идеи, что я могу сделать, чтобы выделенный текст синхронизировался с соответствующим атрибутом объекта javascript?

Ответы [ 2 ]

2 голосов
/ 18 марта 2013

Вы можете сохранить как значение, так и текст, если используете подписчиков. Например, если каждый из ваших объектов javascript выглядит так:

    var optionObject = {
       text:"text1"
       value: 1
    }

Тогда ваша привязка будет выглядеть так:

Где 'OptionsObjects' является коллекцией optionObject и selectedOption имеет два наблюдаемых свойства: текст и значение. Наконец вы подписываетесь на свойство value 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 ().

1 голос
/ 24 января 2011

Так что да, вы получили то, что я получал.Используйте текст в качестве значения параметров выбора, а не указатель.Значение действительно должно быть чем-то полезным, я не могу вспомнить ни одного случая, когда я когда-либо использовал индекс.Конечно, число, но число, которое каким-то образом относится к моделям приложения (например, к идентификатору из базы данных), а не к количеству элементов в поле выбора.

Отлично сделано.

...