【问题标题】:Knoockout computed observable write doesnt update淘汰赛计算的可观察写入不更新
【发布时间】:2019-01-04 21:39:34
【问题描述】:

以下是计算的 observable,我调用了它的 write 函数,但是 write 不会更新计算的值。

self.pagesToBeDisplayed = ko.computed({
    read: function () {
       return self.pages();
    }, write: function (totalCount) {
        self.pages(totalCount) 
    },
    deferEvaluation: true
});

我将上述 observable 称为 self.pagesToBeDisplayed(5)。但是,只有 self.pages 的值会更新并且 self.pagesToBeDisplayed 仍然是旧值。

【问题讨论】:

    标签: javascript knockout.js computed-observable


    【解决方案1】:

    它按预期工作:

    var viewmodel = function(){
      var self = this;
      self.pages = ko.observable(2);
      self.pagesToBeDisplayed = ko.computed({
        read: function () {
           return self.pages();
        }, write: function (totalCount) {
            self.pages(totalCount) 
        },
        deferEvaluation: true
      });
      
      self.update = function(){
        self.pagesToBeDisplayed(5);
      };
    };
    
    ko.applyBindings(new viewmodel());
    <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
    
    Update via input:
    <input type="number" data-bind="value: pagesToBeDisplayed">
    <br>
    
    Update via JS:
    <button data-bind="click: update">Update</button>
    
    <br><br>
    Latest values:
    <br>
    self.pages:<span data-bind="text: pages"></span>
    <br>
    self.pagesToBeDisplayed:<span data-bind="text: pagesToBeDisplayed"></span>

    可能是代码的其他部分导致了问题。

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 2015-01-25
      • 2021-09-19
      • 1970-01-01
      • 2013-08-26
      • 2018-03-30
      • 2023-03-12
      • 2014-04-24
      • 2013-05-01
      相关资源
      最近更新 更多