我有淘汰赛的一天 . 这是我简化的VM:
function UserRecruitingViewModel(apiBaseUrl, userId) {
var self = this;
self.orgs = ko.observableArray();
//ddl org view switcher stuff
self.orgDdl = ko.observableArray();
self.selectedOrg = ko.observable();
var DropdownOrg = function (name, orgId) {
this.name = name;
this.orgId = orgId;
};
//...snip ajax get to pull data...//
}
注意我在那里有这一行:
self.selectedOrg = ko.observable();
在我的页面上,我有这个下拉列表:
<select
data-bind="options: $root.orgDdl, optionsText: 'name', optionsValue: $root.selectedOrg">
</select>
为便于阅读,数据绑定值:
data-bind="
options: $root.orgDdl,
optionsText: 'name',
optionsValue: $root.selectedOrg"
这不起作用 . 如果我的select元素没有optionsValue绑定,那么它将使用我从GET请求获得的值绑定列表 .
我在控制台中收到一条错误消息:
Unable to process binding "text: function (){return selectedOrg() }"
Message: selectedOrg is not defined
我很困惑因为我的VM上有selectedOrg observable set .
2 回答
如果 selectedOrg 要获取选定选项的对象,则在我的示例中使用类似 selectedOption .
Here is sample jsfiddle for reference(基于样本选项模型的样本,因为您的问题不明确)
你只想在你的绑定中使用
value
而不是optionsValue
.value
指定observable获取选择结果的内容;如果要将value
设置为对象的一个特定属性而不是对象本身,则使用optionsValue
. 假设您希望selectedOrg()
包含您选择的整个DropdownOrg
对象,则不需要optionsValue
.