-1

假设我有下拉列表:

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

而这个下拉列表通过knockout js绑定到一个复杂对象:

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

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

列表很好,并且值正在更新视图模型中的 departmentId 就好了。问题是该服务实际上返回了一个包含多个属性的对象列表。下拉列表的绑定只定义了从哪里获取文本、从哪里获取值以及如何处理选定的值。在选择更改时,我还想对这些对象的其他成员做一些其他的事情。

例如,如果加载到 this.departments 中的对象包含一个名为 subdepartmentOfId 的属性,我如何检索列表中当前选定项目的该属性?我的第一直觉是获取选定的索引并在可观察数组中找到它,但这听起来不可靠,而且似乎有更简单的方法可以做到这一点。

4

1 回答 1

0

我几乎一发帖就想通了:

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

将 optionsValue 更改为$root然后通过以下方式访问属性this.selectedDepartment().subdepartmentOfId

于 2013-11-15T04:38:33.857 回答