2013-11-20 45 views
0

我使用knockout.js選擇值沒有設置,並且它不是設置一個空的選項(四)值:Knockout.js -

<select data-bind="value: item.widgetValue, attr: {id: item.widgetName, name: item.widgetName}, options: item.options, optionsText: ‘label’, optionsValue: ‘value’」 id=」fld-「 name=」fld0」> 
    <option value=」one」>One</option> 
    <option value=」two」>Two</option> 
    <option value=」three」>Three</option> 
    <option value>Four</option> 
    ... 
</select> 

這是創建一個問題:當你在任何選項,並嘗試選擇四,它選擇一個;它只會在您嘗試選擇它時第二次選擇四。

我試圖改變淘汰賽數據綁定來解決它:

value: $.trim(item.widgetValue) 

這使您可以立即選擇四,但錯誤地顯示爲一個您選擇了四個提交表單之後被選中。

任何想法可能會導致這種情況,或如何解決它?

回答

0

如果您在選擇元素上使用選項綁定,則不應手動設置選項。如果這些是通過綁定動態創建的(即,您實際上使用item.options作爲源代碼),那麼檢查您綁定select元素的對象是否爲-

item.options可能看起來像這樣(缺少值或以某種方式不會像其他選項) -

item.options = [ 
    { label: 'someLabel1', value: 'someValue1' }, 
    { label: 'someLabel2', value: 'someValue2' }, 
    { label: 'someLabel3', 'someValue3' } 
    ]; 

,但應該是這樣的(明確定義的模型更均勻對象) -

function optionModel(label, value) { 
    var self = this; 
    self.label = ko.observable(label); 
    self.value = ko.observable(value); 
} 

item.options = [ 
    new optionModel('someLabel1', 'someValue1'), 
    new optionModel('someLabel2', 'someValue2'), 
    new optionModel('someLabel3', 'someValue3') 
    ]; 
+0

我已經證實,我的JSON是良好的。該值設置爲空字符串,這是我一直懷疑的問題。但似乎這應該不成問題。 – user3010521