【问题标题】:KnockoutJS observable not updated on screenKnockoutJS observable 未在屏幕上更新
【发布时间】: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")。您是否完成了教程或阅读了文档?

标签: javascript knockout.js


【解决方案1】:

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

self._index("12");

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

【讨论】:

  • 一个巨大的“Doh!”非常感谢您的快速回答!
  • 乐于助人。如果这解决了您的问题,您能否考虑接受这个答案?
猜你喜欢
  • 2013-11-16
  • 2020-05-05
  • 2020-04-27
  • 1970-01-01
  • 2020-12-30
  • 1970-01-01
  • 2016-09-29
  • 1970-01-01
  • 2020-07-17
相关资源
最近更新 更多