【发布时间】:2014-08-12 22:29:38
【问题描述】:
从服务器接收到一个 JSON 字符串,我正在尝试使用 KO Mapping 插件自定义映射,以便我可以使用 KO 验证插件添加验证。
有一个名为 Player 的模型对象,它有一个名为 Trophies 的属性,它是一个对象数组。
// Business Objects
var myPlayer = function (player) {
this.ID = ko.observable(player.ID);
this.Name = ko.observable(player.Name).extend({required: true});
this.Rank = ko.observable(player.Rank);
this.Trophies = ko.observableArray(player.Trophies);
}
var myTrophy = function (trophy) {
this.Name = ko.observable(trophy.Name).extend({required: true});
this.Year = ko.observable(trophy.Year).extend({required: true});
}
我不知道如何调用 myTrophy,以便我可以自定义映射 Trophies 数组以及验证。
//KO binding
var playerModel = ko.mapping.fromJSON(jsonString, mapping);
ko.applyBindings(playerModel);
// Mapping
var mapping = {
'Player': {
create: function (options) {
var _player = new myPlayer(options.data);
return _player;
}
}
}
这里是jsfiddle
如果您在 jsfiddle 中注意到,如果我删除 Name 属性,我会收到验证消息“这是必需的”,同样我想获得奖杯名称和年份的验证消息。如果您需要更多详细信息,请告诉我。谢谢
【问题讨论】:
标签: knockout.js knockout-mapping-plugin knockout-validation