我知道您可以检索“已更改的”字样。当您直接订阅可观察数组时,参数中的信息会传回给您。
我正在编写基于可观察数组的自定义绑定,并希望在:update callback中看到相同的更改信息。
我似乎无法使用。有办法搞定吗?
我想我可以订阅:init中的observable数组并定义我自己的更新回调,但这感觉不对。
...谢谢
答案 0 :(得分:0)
绑定更新是在observable之后触发的,相当于订阅change事件,所以你想要的东西在当前的淘汰框架中是不可能的
为了在更改之前访问值,您需要订阅可观察的beforeChange事件。
您仍然可以稍微轻松地在更新处理程序中完成工作。
init: function( element, valueAccessor, allBindings, viewModel, bindingContext ) {
var observable = valueAccessor();
// Attach a new observable to the existing observable for use in the use in the update handler
observable.beforeValue = ko.observable();
var subscription = observable.subscribe(function(oldValue) {
observable.beforeValue(oldValue);
}, null, 'beforeChange');
ko.utils.domNodeDisposal.addDisposeCallback(function() { subscription.dispose(); } );
},
update: function(element, valueAccessor, allBindings, viewModel, bindingContext ) {
var observable = valueAccessor();
var beforeValue = observable.beforeValue();
var currentValue = observable();
// Do update stuff here
}