这是一个小提琴:http://jsfiddle.net/BNXTm/1/
正如您所看到的,即使新顾问具有Commercial
角色,选择也会显示Consultant
而不是Commercial
。如何使选择元素显示顾问角色的名称?
答案 0 :(得分:1)
值绑定比较对象引用以匹配所选值。
列表中的Role对象和所选对象不共享相同的引用
var c1 = new Consultant("Foo BAR", ko.utils.arrayFirst(contractViewModel.availableRoles, function(item) {
return item.tag === "Co";
}));
答案 1 :(得分:0)
你可以做的是创建一个使用普通值而不是对象的计算器:
self.role = ko.observable(role);
self.role.forSelect = ko.computed({
read: function() {
return self.role().tag;
},
write: function(newValue) {
self.role(contractViewModel.getRole(newValue));
}
});
这种role
始终是availableRoles
中的对象之一。