2017-04-13 81 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

乐于助人。如果这解决了你的问题,你能否考虑接受这个答案? –