该小提琴中的代码根本不起作用,至少不适合我。但是,以下是您通常如何将映射插件与现有视图模型实例一起使用:
function PageModel() { /* ... */ }
$(document).ready(function() {
var model = new PageModel();
// Don't replace some observable, but extend the view model automatically,
// creating an observable for each property in "data".
ko.mapping.fromJS(data, userReportMapping, model);
ko.applyBindings(model);
});
http://jsfiddle.net/Quu4f/27/
更新:您还需要/应该指定映射选项应该应用于数据对象中的哪个键:
var userReportMapping = {
'UserReports': {
key: function(data) {
return ko.utils.unwrapObservable(data.Id);
},
create: function(options) {
return new userReportModel(options.data);
}
}
};
但是,当您在数据集中有两个具有相同 ID 的项目时会出现错误,这有点奇怪。似乎没有为副本执行“创建”回调,但仍然创建了一个正常的可观察对象。
http://jsfiddle.net/Quu4f/29/