我目前使用以下对象将一些JSON数据映射到:
function Regions() {
var self = this;
self.regions = ko.observableArray([]);
self.addRegion = function () {
// add a region
};
self.removeRegion = function (region) {
// remove a region
};
}
function Region() {
var self = this;
self.region = ko.observable("");
self.products = new Products();
}
function Products() {
var self = this;
self.products = ko.observableArray([]);
self.addProduct = function () {
// add a product
};
self.removeProduct = function (product) {
// remove a product
};
}
function Product() {
var self = this;
self.name = ko.observable("");
self.price = ko.observable("");
}
我试图通过执行以下操作来映射来自服务器的JSON响应:
ko.mapping.fromJS(appViewModel, {}, new Regions());
这样可以正常工作,除了Products对象上的函数被映射插件覆盖,而Regions对象上的函数仍然存在。
有没有办法这样做,以便我可以将我的功能保留在Products对象上?
答案 0 :(得分:0)
映射插件适用于第一级,因为它使用new Regions()
作为实例。它不知道内部区域数组的实例/函数实例化。
它创建具有相同名称但不是 Product()函数实例的条目 - 映射不知道它,因此对象只是可观察属性的集合。这有意义吗?
在映射文档中查看使用“create”定制对象构造部分。你需要告诉我们如何以这种方式构造子对象。