2015-09-03 29 views
0

在此處使用敲除。我有這樣的HTML:Valueallowunset無法按預期運行

<p> 
Choose: 
<select data-bind="options: countries 
        value: selectedCountry, 
        valueAllowUnset: false 
        "></select> 
</p> 

<p>Choice: <span data-bind="text: selectedCountry"></span> </p> 

<button data-bind="click: changeCountry">Change Value</button> 

而且這樣的腳本:

function ViewModel() { 
    var self = this; 
    self.countries = ['list1','lsit2','list3']; 
    self.selectedCountry = ko.observable('list4'); 
    self.changeCountry = function()  { 
     self.selectedCountry('NEGA booom'); 
    }; 


ko.applyBindings(new ViewModel()); 

跨度中顯示的文本與負載和按鈕的點擊正確的。不過,當我更改下拉列表時不會更新。

我讀了一堆關於淘汰賽文件和不理解「valueAllowUnset」是如何工作的

編輯:多一點點關於這個問題:我有一個基於選擇了一些其他的選擇的列表中動態呈現。因爲selectedCountryko.observable,當該清單清除以更新時,所有<options>消失,並且selectedCountry的值被設置爲undefined

這裏是一個小提琴:

http://jsfiddle.net/jfakey/9300ngdw/2/

回答

1

您要使用valueAllowUnset與KO 3.0版本,但它是從KO 3.1檢查here

valueAllowUnset選項後面介紹:現在有一個valueAllowUnset選項用於與中包含的值不匹配的情況個選項:

  • 使用此選項設置爲true,淘汰賽不會強制值以匹配現有的選項。
  • 在不匹配的情況下,選擇將被設置爲空選項,但該值不會被覆蓋。

來到你的問題,因爲你用不期權使事情在這種情況下valueAllowUnset失控去存在一定的值更新是一個救世主它設置下拉選擇清空使事情不出門的同步 。

觀點:

<p>Choose: <select data-bind="options: countries,,optionsCaption:'-select-',value: selectedCountry,valueAllowUnset: true"></select></p> 
<p>Choice: <span data-bind="text: selectedCountry"></span> </p> 
<button data-bind="click: changeCountry">Change Value</button> 

檢查here的工作樣本

+0

發現周圍的工作 - 我的列表呈現之前沒有選項(這是什麼套'的SELECTEDCOUNTRY價值'to'undefined'和'valueAllowUnset'意圖處理什麼,我將'