KnockoutJS observable 未在屏幕上更新

Posted

技术标签:

【中文标题】KnockoutJS observable 未在屏幕上更新【英文标题】:KnockoutJS observable not updated on screen 【发布时间】:2017-09-09 21:56:02 【问题描述】:

我似乎做错了什么,但无法弄清楚!我这里有一个小提琴:

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> 

【问题讨论】:

您必须通过使用值调用它来设置它:self._index("12")。您是否完成了教程或阅读了文档? 【参考方案1】:

当你更新一个 Knockout Observable 时,你必须调用 observable 函数,例如

self._index("12");

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

【讨论】:

一个巨大的“Doh!”非常感谢您的快速回答! 乐于助人。如果这解决了您的问题,您能否考虑接受这个答案?

以上是关于KnockoutJS observable 未在屏幕上更新的主要内容,如果未能解决你的问题,请参考以下文章

Knockoutjs之observable和applyBindings的使用

Knockoutjs之observable和applyBindings的使用

KnockoutJS 查找 ko.observable() 长度

KnockoutJs observable array 通过计算 observable 和节流

为啥我的 knockoutjs 计算 observable 不起作用?

knockoutjs 图像 src 未从 ko.observable 更新