淘汰赛和事件时间安排

Knockout and timing of events

本文关键字:时间 事件 淘汰赛      更新时间:2023-09-26

>我有一个计算函数,可以通知按钮是否应该禁用。我也订阅了这个更新另一个可观察量的计算函数。更新此可观察量时,它将运行自定义绑定。

问题是 subscribe() 在按钮被禁用之前正在运行。我希望计算函数首先运行,然后启用/禁用按钮,最后运行订阅。

这可能吗?setTimeout() 不是一个好的选择。

this.enableButton = ko.computed(function() { return true or false });
this.enableButton.subscribe(function() { myself.triggerBinding(true) });

.html:

<button data-bind="enable: enableButton" />

如果我理解正确,我希望这有所帮助:

http://jsfiddle.net/UHgTS/1

var viewModel = {
    buttonIsEnabled : ko.observable(true)
};
viewModel.enableButton = ko.computed({
    read : function () {
        log("read enableButton");
        return this.buttonIsEnabled();
    },
    write : function (isEnabled) {
        log("write enableButton");
        this.buttonIsEnabled(isEnabled);         
    },
    owner : viewModel    
});
viewModel.otherObservable = ko.computed({
    read : function(){
        log("read otherObservable");
        return this.buttonIsEnabled();
    },
    write : function () {
        log("write otherObservable");
    },
    owner : viewModel
});
viewModel.otherObservable.subscribe(function(){
    log("run subscription");
    log("----------------");
});
function log(message){
    $("#log").append(message + "'n");
}
ko.applyBindings(viewModel);