我想以下列方式将json数组数据映射到observablearray:
var modell = function() {
self.activities = ko.observableArray();
...
ko.mapping.fromJS(dataJson, {}, self.activities);
// as a result I can use self.activities[0].FirstName or other properties
}
每个活动都是复杂的对象。
为简单起见,我们可以假设每个活动中有两个属性 - FirstName
和LastName
。这很好用,但可以写
映射选项将为每个活动创建计算的可观察FullName
?
所以,我需要引用像self.activities [0] .FirstName,以及self.activities [0] .FullName,其中FirstName是简单的可观察,但FullName是计算的。
修改 这是JSFiddle在http://jsfiddle.net/5ScWn/&& http://jsfiddle.net/8PK6F/,但它仍无效。
答案 0 :(得分:2)
是的,可以使用映射选项为可观察数组中的每个项创建计算的observable。请尝试以下方法:
var mappingOptions = {
'activities': {
create: function (options) {
return (new (function () {
this.fullName = ko.computed(function () {
return this.firstName() + ' ' + this.lastName;
}, this);
ko.mapping.fromJS(options.data, {}, this); // continue the std mapping
})());
}
}
};
然后通过ko.mapping.fromJS(dataJson, mappingOptions, self.activities);