【问题标题】:knockout is not updating observebles within extend functions淘汰赛没有更新扩展函数中的观察者
【发布时间】:2014-01-20 23:45:59
【问题描述】:

我正在尝试使用敲除在范围内显示扩展函数的值。

这是我的 HTML:

<input type="text" data-bind="value: clientName" />
<span data-bind="text: clientName.dummy"></span>

还有我的 Javascript 代码:

Model = function() {

//MyExtension definition
ko.extenders.MyExtension = function(target, options) {
    target.dummy = ko.observable('hello');

    target.subscribe(function(newValue){
        target.dummy = ko.observable(new Date().toString());
        target.dummy.notifySubscribers(); //this shouldn't be necessary
    });

    return target;
};

this.clientName = ko.observable().extend({MyExtension: "some options here"} );

};

myModel = new Model()
ko.applyBindings(myModel);

由于“dummy”本身就是一个可观察的,我所期待的行为是:

1) User changed input box text
2) knockout trigers the subscribe function (and this is hapening)
3) dummy value is updated with current time (happens to)
4) The span's text is updated with last dummy value (this is not happening)

知道为什么吗? 谢谢。

PS:这是完整的测试:http://jsfiddle.net/AYLv8/5/

【问题讨论】:

    标签: javascript knockout.js


    【解决方案1】:

    您将在 subscribe 函数中使用全新的全新 observable 覆盖您的 dummy 属性。

    正确的实现是更新dummy observable:

    target.subscribe(function(newValue){
        target.dummy(new Date().toString());
    });
    

    演示JSFiddle.

    【讨论】:

      猜你喜欢
      • 2015-01-25
      • 2013-05-01
      • 2021-09-19
      • 2013-08-26
      • 2012-09-08
      • 2018-03-30
      • 2016-11-09
      • 2014-11-05
      相关资源
      最近更新 更多