1

ボタンを無効にするかどうかを通知する計算関数があります。また、別のオブザーバブルを更新するこの計算関数をサブスクライブしています。このオブザーバブルが更新されると、カスタム バインディングが実行されます。

問題は、ボタンが無効になる前に subscribe() が実行されていることです。計算された関数を最初に実行し、次にボタンを有効/無効にして、最後にサブスクリプションを実行したい..

これは可能ですか?setTimeout() は適切なオプションではありません。

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

html:

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

1 に答える 1

0

私があなたを正しく理解していれば、これが役立つことを願っています:

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);
于 2012-05-08T10:50:43.570 に答える