Javascript 敲除映射导致原型对象上的覆盖
这个问题让我头疼 基本上,我有以下viewModel,它有一个派生类:Javascript 敲除映射导致原型对象上的覆盖,javascript,knockout.js,Javascript,Knockout.js,这个问题让我头疼 基本上,我有以下viewModel,它有一个派生类: define(['./AViewModel'],function (aViewModel) { var newModel= function () { var self = this; this.Name = ko.observable().extend({ required: true }); }); }; newModel.protot
define(['./AViewModel'],function (aViewModel) {
var newModel= function () {
var self = this;
this.Name = ko.observable().extend({ required: true });
});
};
newModel.prototype = Object.create(new baseViewModel);
newModel.prototype.constructor = newModel;
return newModel;
});
然后我在函数中执行以下操作
var mappedData = [];
ko.utils.arrayForEach(data, function (item) {
var result = aFactory.create("newModel");
var resultList = ko.mapping.fromJS(item, {}, result);
mappedData.push(resultList);
});
return tasks(mappedData);
但是,每次将baseViewModel添加到数组时都会写入。新型号还可以
您知道是什么导致了这种情况吗?因为在向数组中添加时,派生类型的映射似乎无法正常工作
干杯我不确定问题出在哪里,它正在按照我的预期工作。你能把你的问题改写一下吗?或者再举一个更完整的例子?你说的“baseViewModel每次添加到数组时都会被写入”是什么意思?它不应该这样做吗?嗨,当新模型是新的时,它也会添加baseViewModel。但是当我们使用敲除映射时,它会用当前的baseViewModel数据覆盖数组中的所有元素。例如,在第一个循环中,baseViewModel的参考是ab12。在第二个liip上,baseVIewModel的参考是ab13,但该对象在阵列对象中的所有baseViewmodels上都被覆盖。原型似乎有一个集合实例,可以作为函数指针使用。您可以创建一个JSFIDLE来演示这个问题吗。在aFactory.create中发生了什么,该代码似乎就是您的问题所在