在可观察的情况下淘汰oldValue

时间:2015-05-07 16:07:31

标签: javascript knockout.js

我有一个从服务器获取的reocrds列表,并由ko.mapping.fromJS转换为knockout observableArray。

      self.items = ko.observableArray([]);
      $.getJSON('/api/getdata', function(data) {
      var mappedTasks = $.map(dataFromServer, function(cls) {
                                 return ko.mapping.fromJS(cls);
                         });
         self.items(mappedTasks);
      }

在某些情况下,我希望将某些属性设置为null并绑定到UI。稍后用户操作我想恢复旧的现有数据而不是null。有没有办法将属性oldValue附加到observable,以便我可以保留旧值并在必要时将其设置回来。敲除扩展可用于保存数据吗?对此的任何帮助都非常感谢,

乔治

1 个答案:

答案 0 :(得分:0)

当您将数据从服务器映射到具有knockout observables的对象时,您还可以在同一对象上定义其他observable。

  self.items = ko.observableArray([]);
  $.getJSON('/api/getdata', function(data) {
  var mappedTasks = $.map(dataFromServer, function(cls) {
                             var item = ko.mapping.fromJS(cls);
                             item.AdditionalValue1 = ko.observable(0);
                             item.AdditionalValue2 = ko.observable('test');
                             return item;
                     });
     self.items(mappedTasks);
  }

如果您想要更改绑定对象的方式,可能更容易构建从服务器端数据到客户端视图模型的映射。