【问题标题】:Knockout and timing of events淘汰赛和事件的时间安排
【发布时间】:2013-09-05 17:29:34
【问题描述】:

我有一个计算函数,它会通知按钮是否应该被禁用。 我也订阅了这个计算函数,它更新了另一个 observable。当这个 observable 被更新时,它会运行一个自定义绑定。

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

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

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

html:

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

【问题讨论】:

    标签: javascript jquery knockout.js


    【解决方案1】:

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

    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);
    

    【讨论】:

    • 谢谢!正是我想要的:D
    猜你喜欢
    • 1970-01-01
    • 2018-02-27
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 2012-05-22
    • 2013-09-10
    • 1970-01-01
    相关资源
    最近更新 更多