你可以尝试做这样的事情:
1) 创建函数,当任何 viewModel 中的任何 observable 发生变化时都希望调用该函数(第一个参数 - 值,第二个 - 事件类型,与subscribe
函数第三个参数相同):
function extendNotification(valueToNotify, event) {
if (event != "beforeChange") {
console.log("extend notification: " + valueToNotify);
}
};
2)创建辅助包装器:
function beforeWrapper(fnBefore, fnOriginal) {
return function () {
fnBefore.apply(this, arguments);
return fnOriginal.apply(this, arguments);
};
};
3)并用你的扩展器包装ko.subscribable.fn.notifySubscribers
函数:
ko.subscribable.fn.notifySubscribers =
beforeWrapper(extendNotification, ko.subscribable.fn.notifySubscribers);
可能它不是解决您问题的最佳解决方案,但您可以根据需要对其进行修改。
演示小提琴。