2017-04-13 76 views
0

我似乎做錯了什麼,但無法弄清楚!我這裏有一個小提琴:KnockoutJS observable未在屏幕上更新

https://jsfiddle.net/L69jk5yL/

我最初被設定爲11的值。當我選擇下拉的東西,值被更新爲12可觀察到的_index,因爲我可以在看淘汰賽模式,但屏幕上的值不會更新。

function viewModel() { 
    var self = this;  
    self._index = ko.observable("11");   

    self.selectResponse = function (item) { 
      alert('current ko value: ' + self._index()); 
      self._index = "12"; 
     alert('new ko value: ' + self._index); 
    } 
} 

ko.applyBindings(new viewModel());

<p>index: <strong data-bind="text: _index"></strong></p> 

    <select name="dateSelected" id="dateSelected" data-bind="event: { change: $root.selectResponse }"> 
     <option value="">Select something...</option> 
     <option value="a">a</option> 
</select> 
+2

您必須通過調用值來設置它:'self._index(「12」)'。你有沒有完成教程或閱讀文檔? – user3297291

回答

2

當您更新Knockout Observable時,您必須調用observable函數,例如,

self._index("12"); 

通過寫self._index = "12";你實際上有值「12」的標量字符串屬性更換觀察特性。

+0

一個巨大的'Doh!'非常感謝您快速回答! – user1863802

+0

樂於助人。如果這解決了你的問題,你能否考慮接受這個答案? –