2012-05-08 7 views
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" /> 

答えて

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

感謝を!正確に私が探していたもの:D – Numm3n

関連する問題