将 Knockout 可观察变量重置为其起始值
Reset Knockout observable variables to its start value
我很想知道 Knockout 是否实现了一种将可观察变量重置为其起始值的方法。例如:
var test = ko.observable("test");
test("ciao");
test.reset();
值回到 "test"。是否存在类似这样的东西或保存起始值的字段?
我不确定通过 extender 向可观察对象添加函数是否是一个好习惯,但您可以像这样添加此功能:
ko.extenders.canReset = function(target, enabled) {
// If enabled, we assign a reset method bound to target's current value:
return enabled
? Object.assign(target, { reset: target.bind(null, target()) })
: target;
};
var myObs = ko.observable(10).extend({ canReset: true });
myObs.subscribe(console.log.bind(console, "new value:"));
myObs(20);
myObs(30);
// Reset
myObs.reset();
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
如果 "randomly" 向可观察对象添加方法感觉不对,您还可以查看 fn
-way of adding functionality。
我很想知道 Knockout 是否实现了一种将可观察变量重置为其起始值的方法。例如:
var test = ko.observable("test");
test("ciao");
test.reset();
值回到 "test"。是否存在类似这样的东西或保存起始值的字段?
我不确定通过 extender 向可观察对象添加函数是否是一个好习惯,但您可以像这样添加此功能:
ko.extenders.canReset = function(target, enabled) {
// If enabled, we assign a reset method bound to target's current value:
return enabled
? Object.assign(target, { reset: target.bind(null, target()) })
: target;
};
var myObs = ko.observable(10).extend({ canReset: true });
myObs.subscribe(console.log.bind(console, "new value:"));
myObs(20);
myObs(30);
// Reset
myObs.reset();
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
如果 "randomly" 向可观察对象添加方法感觉不对,您还可以查看 fn
-way of adding functionality。