這裏是一個小提琴:http://jsfiddle.net/BNXTm/1/Knockoutjs - 讓選擇顯示可觀察到的電流值作爲默認值
正如你可以看到,即使新的顧問有Commercial
作用,選擇顯示器Consultant
代替Commercial
。我如何讓select元素顯示顧問的角色名稱?
這裏是一個小提琴:http://jsfiddle.net/BNXTm/1/Knockoutjs - 讓選擇顯示可觀察到的電流值作爲默認值
正如你可以看到,即使新的顧問有Commercial
作用,選擇顯示器Consultant
代替Commercial
。我如何讓select元素顯示顧問的角色名稱?
值綁定比較對象的引用,以匹配選擇的值。
在列表中選擇的對象角色對象不共享相同的參考
var c1 = new Consultant("Foo BAR", ko.utils.arrayFirst(contractViewModel.availableRoles, function(item) {
return item.tag === "Co";
}));
你可以做的就是創建一個計算與一個普通的值,而不是對象的原理:
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
的對象之一。
下拉還說顧問,而不是商業和文字旁邊,現在說顧問 – Tanner
是,似乎當你使用'role'而不是'role()'時,綁定在選擇和文本之間起作用,但不關心顧問的角色是什麼。我還沒有找到如何使兩者合作,似乎是因爲我使用散列而不是基本的字符串數組。 –