2013-11-15 1 views
-1

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

<select id="department-options" 
data-bind="options: departments, optionsText: 'Name', optionsValue: 'DepartmentId', value: departmentId" /> 

И этот выпадающий список привязан к сложному объекту с помощью нокаута JS:

this.departmentId = ko.observable(); 
this.departments = ko.observableArray([]); 

this.setDepartments = function(){ 
    $.get('myserviceurl', departments); 
} 

прейскурантного штраф и стоимость обновления DepartmentID в представлении модель просто отлично. Дело в том, что служба фактически возвращает список объектов, которые содержат несколько свойств. Связывание для раскрывающегося списка определяет, где можно получить текст, где получить значение, и что делать с выбранным значением. Есть и другие вещи, которые я хотел бы сделать с другими членами этих объектов при изменении выбора.

Так, например, если объекты, загруженные в this.departments, содержат свойство под названием subdepartmentOfId, как я могу получить это свойство текущего выбранного элемента в списке? Мой первый инстинкт состоит в том, чтобы захватить выбранный индекс и найти его в наблюдаемом массиве, но это звучит ненадежно, и кажется, что было бы намного проще сделать это.

+2

Если вопрос плохо, то указать, почему вопрос плохо. – Sinaesthetic

ответ

0

я понял это почти сразу после того, как я отправил:

<select id="department-options" 
data-bind="options: departments, optionsText: 'Name', optionsValue: $root, value: selectedDepartment" /> 

Изменена optionsValue к $root затем свойства доступа через this.selectedDepartment().subdepartmentOfId

Смежные вопросы