2014-04-25 133 views
0

如果綁定下拉菜單的初始選擇時出現問題,如果指定「optionValue」,則所有都會正常,但如果指定了此選項,則在選擇更改後,它將僅返回值而不是整個對象,這是我想要的,返回整個對象,像這樣: http://jsfiddle.net/Princa/tuMta/109/Knockout.js下拉菜單綁定選中

那麼我應該如何綁定一個初始值而不指定'optionValue'?我設置了

selectedCountry: ko.observable(new Country("Sweden", 29000000)), 

,但它沒有工作

+0

更新了我的答案,那撥弄工作 –

回答

2

optionValue設置只對沒有選中的項時顯示在選擇列表中的「佔位符」值。

如果您實際上想要將選擇默認爲列表中的某個項目,請在您的視圖模型本身中執行此操作,方法是將selectedCountry變量設置爲有效值。從您的jsfiddle

例(在這裏更新:http://jsfiddle.net/tuMta/110/):

viewModel.selectedCountry(viewModel.availableCountries()[1]); 
+0

太棒了!我沒有意識到這兩個對象不是「一致的」。我在哪裏可以找到這種文件?! – Princa

+0

這是一個很好的問題....不知道哪裏是最好的地方指向你......這篇文章可能有助於解釋它:http://stamat.wordpress.com/2013/06/22/javascript-object-comparison /。一般來說,只有當物體在記憶中佔據相同的位置時才認爲它們是相等的。因此,獨立創建的兩個對象始終是獨立的對象,即使它們包含相同的內容。 –

+0

想想這樣,如果您創建兩個獨立的'Country'對象並修改其中的一個名稱,則另一個不會被修改。這表明它們是不同的對象。 –

1

的問題是,即使你創造了2個clases是瑞典,JS不知道,所以你必須讓它知道它。試試這個方法:

var viewModel = function() { 
var defaultSelected = new Country("Sweden", 29000000); 
this.availableCountries = ko.observableArray([ 
    new Country("UK", 65000000), 
    new Country("USA", 320000000), 
    defaultSelected]); 
this.selectedCountry= ko.observable(defaultSelected); 
}; 

http://jsfiddle.net/tuMta/120/

+1

@JosephGabriel我的壞,真正的問題是,有2個diferent對象,新conty('瑞典')與新國家('瑞典')不同。病毒更新 –

相關問題