Knockout.js 具有ko.mapping的淘汰更新模型

Knockout.js 具有ko.mapping的淘汰更新模型,knockout.js,knockout-mapping-plugin,Knockout.js,Knockout Mapping Plugin,当我们第一次应用ViewModel时,一切正常,但是如果我们在创建计算字段后重新应用映射,它们将被删除。如果不更改密钥,此代码显然有效 是否有方法使用ko.mapping重新计算这些计算字段,而不刷新页面 我也试过使用模板。。。 与其在数组上循环并将comp计算的可观测值添加到每个项目,不如设置映射,以便在创建项目时添加它们 var mapping = { 'list': { key: function (data) { return ko.utils.unwrapOb

当我们第一次应用ViewModel时,一切正常,但是如果我们在创建计算字段后重新应用映射,它们将被删除。如果不更改密钥,此代码显然有效

是否有方法使用ko.mapping重新计算这些计算字段,而不刷新页面

我也试过使用模板。。。

与其在数组上循环并将
comp
计算的可观测值添加到每个项目,不如设置映射,以便在创建项目时添加它们

var mapping = {
  'list': {
    key: function (data) {
      return ko.utils.unwrapObservable(data.name);
    },
    create: function (options) {
      var mapped = ko.mapping.fromJS(options.data, {
        'list': {
          key: function (data) {
            return ko.utils.unwrapObservable(data.name);
          },
          create: function (options) {
            var mapped = ko.mapping.fromJS(options.data);
            return ko.utils.extend(mapped, {
              comp: ko.computed(function () {
                return this.val() * 3;
              }, mapped)
            });
          }
        }
      });
      return ko.utils.extend(mapped, {
        comp: ko.computed(function () {
          return this.val() * 2;
        }, mapped)
      });
    }
  },
  'name': {
    key: function (data) {
      return ko.utils.unwrapObservable(data.name);
    }
  }
};
var model = ko.mapping.fromJS(modelJs, mapping);

var mapping = {
  'list': {
    key: function (data) {
      return ko.utils.unwrapObservable(data.name);
    },
    create: function (options) {
      var mapped = ko.mapping.fromJS(options.data, {
        'list': {
          key: function (data) {
            return ko.utils.unwrapObservable(data.name);
          },
          create: function (options) {
            var mapped = ko.mapping.fromJS(options.data);
            return ko.utils.extend(mapped, {
              comp: ko.computed(function () {
                return this.val() * 3;
              }, mapped)
            });
          }
        }
      });
      return ko.utils.extend(mapped, {
        comp: ko.computed(function () {
          return this.val() * 2;
        }, mapped)
      });
    }
  },
  'name': {
    key: function (data) {
      return ko.utils.unwrapObservable(data.name);
    }
  }
};
var model = ko.mapping.fromJS(modelJs, mapping);