Как установить валидацию в массивы с использованием проверки нокаута?Отображение нокаута - проверка массивов
Мое определение объекта
//c# code
public class Trophy
{
public string Name { get; set; }
public string Category { get; set; }
public double PrizeMoney { get; set; }
}
public class Player
{
public string Name { get; set; }
public List<Trophy> Trophies { get; set; }
}
Я могу установить проверку, как «требуется» с помощью проверки kò для простых типов, таких как «Имя», но я не могу установить в призах, который является массивом. Для простых типов, которые я использую, как показано ниже
// javascript code
var localModel = ko.mapping.fromJSON(getPlayerModelJson());
// Validation
localModel.Name.extend({ required: { message: 'Please enter first name' } });
Пожалуйста, дайте мне знать, как сделать для имени, категории и призовыми с в призах?
Я пытался использовать «Настройка строительства объекта с помощью„создать“», как указано в
http://knockoutjs.com/documentation/plugins-mapping.html, но он создает элемент массива дублирующие Трофеи, например, если у меня есть два элемента списка в призах полученный объект также имеет два элемента, но это дубликат последнего элемента
// Java script code
var Trophies = function (data) {
Name = ko.observable(data.Name).extend({ required: { message: 'Please enter name' } }),
Category = ko.observable(data.Category),
PrizeMoney = ko.observable(data.PrizeMoney)
}
var localModel = ko.mapping.fromJSON(getPlayerModelJson(), TrophiesMapping);
//Custom mapping
var TrophiesMapping = {
'Trophies': {
create: function (options) {
return new Trophies(options.data);
}
}
}
Все, что мне нужно, это проверить свойства в массиве. Спасибо
Спасибо Кори Коул. Проблема была не в ko.mapping.fromJSON, а в объекте трофеев, разница в вашем коде заключалась в том, что вы ссылаетесь на использование self (this), например self.Name, self.Trophy и self.PrizeMoney. Так что проблема решена. – Swamy