那个小提琴中的代码根本不起作用,至少不适合我。但是,但是,这里是你如何正常使用映射插件与现有的视图模型实例:
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/
使得与映射没有区别如图所示 - 它不工作的要求 - 看到我的“答案”上面的工作代码,能够完成任务,而不是(IMO)的理想 – BonyT 2012-07-07 21:44:29
对不起 - 需要更清楚 - 当然你已经发布的代码有效 - 我正在努力解决的问题是如何定制映射来处理数组。 – BonyT 2012-07-07 21:45:17
@BonyT好吧,没有马上得到。找到了另一点并更新了我的答案 - 但我仍然不确定这是您现在要找的。 – Niko 2012-07-07 22:01:24