我有来自服务器的数据,如下所示。
var data = [{
'Name': 'David',
'Class': '2A'
}, {
'Name': 'Vincent',
'Class': '2B'
}]
假设我检索数据并使用ko.mapping.fromJS映射它。但是,我想在映射后使数据由另一个属性名称Grade组成。怎么能实现这一目标?这是因为通过另一个ajax调用检索了属性等级的值,并且应该事先定义它。
function MyViewModel() {
var self = this;
self.StudentProfile = ko.observableArray([]);
self.GetStudentProfile = function() {
$.ajax({
..
..
success: function(data) {
ko.mapping.fromJS(data.StudentProfile, {}, self.StudentProfile);
// data after mapping
$.each(self.StudentProfile, function (index, value) {
$.ajax({
..
..
success: function(data) {
self.StudentProfile()[index].Grade(data);
}
});
}
}
})
}
}
// data after mapping
var data = [{
'Name': 'David',
'Class': '2A',
'Grade': ''
}, {
'Name': 'Vincent',
'Class': '2B',
'Grade': ''
}]
答案 0 :(得分:3)
您可以使用
var options = {
create: function(options){
options.data.Grade = ko.observable("");
return options.data;
}
}
ko.mapping.fromJS(data.StudentProfile, options, self.StudentProfile);