KnockoutJs中的`valueWillMutate`是什么?

Tri*_*Gao 6 knockout.js

人们可以踢一个observable调用它的valueHasMutated方法强制通知订阅者.怎么valueWillMutate办?

Han*_*der 8

订阅observable时,有时您想知道observable的更改时的先前值.例如,当您有一个observable selectedItem(在项目列表中),但每个单独的项目也有一个selected属性.当selectedItem修改,你要选择selected = false先前选择的项目.你可以这样做:

selectedItem.subscribe(function (previous) {
    previous.selected = false;
}, null, 'beforeChange');
Run Code Online (Sandbox Code Playgroud)

valueWillMutate用于触发beforeChange事件.

编辑:对于更多实用程序,请查看Knockout-2.2.0,在更改之前订阅获取值和新值.投票得最高的答案会创建一个扩展程序,允许您订阅一个可观察对象并同时使用旧值和新值.

编辑2:只是为了澄清:你不需要明确调用valueWillMutate来获取beforeChange事件:当你操作一个observable时,Knockout会为你做这件事.您只需要在操作基础值时手动执行此操作,或者由于某种原因需要明确触发订阅者.我的答案是从Knockout内部实施的角度写的,我没有说清楚.