2017-05-31 19 views
1

我有KnockoutJS填充(KnockoutJS)如何重置select語句

HTML的

相關部分選擇選項:app.js的

<label>Gender:</label> 
<select data-bind="options: gender, value: selectedGender, optionsText: 'gender'"></select> 

及相關部分:

this.gender = ko.observableArray([{gender: '', value: ''},{gender: 'F', value: 'female'},{gender: 'M', value: 'male'}]); 
this.selectedGender = ko.observable(); 

kn.constructorEnd(this); 

var self = this; 
this.selectedGenderVal = ko.computed(function() { 
    return self.selectedGender() && self.selectedGender().value; 
}) 

然後我已經將點擊事件中的數據綁定添加到我的模式關閉圖標。所有可觀察的數據都被清除,除了上面選擇我試圖清除的那個:

self.selectedGender(""); 

任何線索爲什麼不將它設置爲空值?

回答

1

您的選擇控件的設置沒有「selectedValue」綁定,因此默認情況下整個選項對象將存儲在您的「selectedGender」可觀察對象中。因此,當您嘗試選擇空字符串值時,選擇控件不知道如何將其轉換爲數組中的某個選項對象。

如果添加optionsValue: 'gender'綁定,則它知道使用性別observable中的字符串值比較值,而不是將整個對象相互比較。

+0

將'optionsValue:'gender''添加到綁定只是使得選擇的可觀察值沒有被選中(通過一個空的選擇值) – JackTheKnife

+0

@JackTheKnife是不是你想要的?也許我誤解了你的問題 –

+0

我的代碼 - 我能夠選擇女性的男性,並通過適當的價值,但關閉後,我無法重置爲默認狀態。添加您的建議並選擇女性的男性根本無法工作 - 爲任何選擇傳遞一個空值。 – JackTheKnife