【问题标题】:Reset Knockout observable variables to its start value将 Knockout 可观察变量重置为其起始值
【发布时间】:2017-06-01 18:05:09
【问题描述】:

我很想知道 Knockout 是否实现了将可观察变量重置为其起始值的方法。例如:

var test = ko.observable("test");

test("ciao");
test.reset();

值回到“测试”。是否存在这样的东西或保存起始值的字段?

【问题讨论】:

  • 将其包含在视图模型中,然后创建一个新的实例来初始化值

标签: knockout.js observable reset


【解决方案1】:

我不确定通过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>

如果“随机”向可观察对象添加方法感觉不对,您还可以查看fn-way of adding functionality

【讨论】:

  • 感谢我一直在使用 this.myvalue = ko.observable(myvalue) this.OriginalmyValue = ko.observable(myvalue) 我喜欢你做得更好。
  • 非常好的解决方案!谢谢分享!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-05
  • 1970-01-01
  • 1970-01-01
  • 2021-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多