2016-10-21 15 views
0

私は、オブザーバブルのプロパティを何らかの方法で変更するカスタムバインディングを定義しました。つまり、customPropertyとしましょう。 (例えば):ノックアウト計算とカスタムバインディングの計算順序

ko.bindingHandlers.customBinding = { 
    update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) { 
     //computes some value depending on observable value 
     //... 
     valueAccessor().customProperty = someValue; 
    } 
}; 

また、私はcustomPropertyの値が更新される必要がある私の観察可能なcustomBindedにトリガ計算された、観察を、持っています。 カスタムバインディング内のログと、計算された計算コードがcustomBindingの前に計算されるため、古いcustomProperty値が読み込まれます。

バインディングが計算よりも優先されるように指定することも、カスタムバインドを「待機」する計算を達成するための回避策もありますか?

+1

customPropertyを観測可能にすることはできますか?私の推測では、計算された観測値を再び発生させるべきだということです。 – gkb

+0

customPropertyを観測可能にするのはあまり実行できませんが、 – Nillus

答えて

0

Rate-limiting observable notificationsを使用すると、計算されたオブザーバブルの実行を遅延させることができます。例えば

viewModel.computed = ko.computed(function() { 
    var input = viewModel.input(); 
    return viewModel.input.customProperty + ' ' + input; 
}).extend({rateLimit: 10 }); 

少し遅れても、バインディングは計算されたオブザーバブルの前に実行されます。デモンストレーションについては、JSFiddle exampleを参照してください。

関連する問題