komapping fromjs exclude 属性 从转换为可观察的数组元素内部

komapping fromjs exclude property from converting into observable inside elements of array

我正在尝试使用 komapping 插件将 属性 转换为 observable。

我确实有如下相同类型的对象数组:

 var data =[{ b1: "v1", b2: "b21" }, { b1: "v2", b2: "b22" }] ;

现在我想 属性 b1 as if 和 b2 使用 komapping 转换为 observable。为了简单起见,我在这里只保留了两个属性,但实际上我有更多属性。

所以我试了下:

var data = [{ b1: "v1", b2: "b21" }, { b1: "v2", b2: "b22" }] ;
var result = ko.mapping.fromJS(data, { copy: "b1" });
console.log(result());

但是不行here是jsfiddle

我认为您当前的映射选项仅检查您传递的第一个数据中的 b1 属性 名称,即:数据数组。

解决这个问题的一种方法(可能不是最简单的,我不确定)是定义如何处理每个项目:

var data = [{ b1: "v1" }, { b1: "v2" }];

var result = ko.mapping.fromJS(data, {
    create: function(options) {
      var nestedData = options.data;
      return ko.mapping.fromJS(nestedData, { 'copy': 'b1' });
    }
});

data 中的每个项目都传递给 options.data 中的 create 方法(原始数据仍然可以通过 dataoptions.parent 访问)。

创建函数 returns 使用您最初尝试的映射的映射对象。

这是更新后的 fiddle:http://jsfiddle.net/1ftk3a03/