2014-01-27 49 views

回答

1

值綁定比較對象的引用,以匹配選擇的值。

在列表中選擇的對象角色對象不共享相同的參考

http://jsfiddle.net/BNXTm/4/

var c1 = new Consultant("Foo BAR", ko.utils.arrayFirst(contractViewModel.availableRoles, function(item) { 
    return item.tag === "Co"; 
})); 
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的對象之一。

http://jsfiddle.net/eCkL9/

+0

下拉還說顧問,而不是商業和文字旁邊,現在說顧問 – Tanner

+0

是,似乎當你使用'role'而不是'role()'時,綁定在選擇和文本之間起作用,但不關心顧問的角色是什麼。我還沒有找到如何使兩者合作,似乎是因爲我使用散列而不是基本的字符串數組。 –