KnockoutJS observable未在屏幕上更新

时间:2017-04-13 17:05:15

标签: javascript knockout.js

我似乎做错了什么但是弄不清楚!我有一个小提琴:

https://jsfiddle.net/L69jk5yL/

我有一个可观察的_index,最初设置值为11.当我在下拉列表中选择某些内容时,值会更新为12,正如我在淘汰模型中看到的那样,但是屏幕上的值不会更新。

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> 

1 个答案:

答案 0 :(得分:2)

更新Knockout Observable时,必须调用observable函数,例如

self._index("12");

通过编写self._index = "12";,您实际上是使用值为“12”的标量字符串属性替换Observable属性。