KnockoutJs中的`valueWillMutate`是什么?

时间:2014-07-31 14:02:21

标签: knockout.js

可以通过调用其valueHasMutated方法来强制向订阅者发送通知。 valueWillMutate做了什么?

1 个答案:

答案 0 :(得分:7)

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

selectedItem.subscribe(function (previous) {
    previous.selected = false;
}, null, 'beforeChange');

valueWillMutate用于触发beforeChange事件。

编辑:要获得更多实用功能,请查看Knockout-2.2.0, subscribe get value before change AND new value。投票最高的答案会创建一个扩展程序,允许您订阅一个可观察对象并同时使用旧值和新值。

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