我定义了一个自定义绑定,它改变了一个可观察的属性,让我们说customProperty。 (例如):
ko.bindingHandlers.customBinding = {
update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
//computes some value depending on observable value
//...
valueAccessor().customProperty = someValue;
}
};
我还有一个计算的observable触发我的customBinded observable,我需要更新customProperty的值。 事实证明,在自定义绑定中进行日志记录,并且在计算的代码中计算出的值是在customBinding之前计算的,因此它会读取旧的customProperty值。
我是否可以指定绑定优先于计算,或者是否有一些解决方法可以实现计算到"等待"自定义绑定?
答案 0 :(得分:0)
您可以使用Rate-limiting observable notifications来延迟计算的observable的执行。 e.g。
viewModel.computed = ko.computed(function() {
var input = viewModel.input();
return viewModel.input.customProperty + ' ' + input;
}).extend({rateLimit: 10 });
稍微延迟将允许绑定在计算的observable之前执行。请参阅此JSFiddle example进行演示。