У меня есть следующие проблемы с проверкой моей модели нокаута, и я не знаю, как их решить. Ниже приведена моя модель, прежде всего, с правилами проверки:
var Data = function (data) {
this.Val = data;
}
function ViewModel(item) {
var parse = JSON.parse(item.d);
var self = this;
this.Name = ko.observable(parse.Name);
this.UserType = ko.observable(parse.UserType);
this.ID = ko.observable(parse.ID).extend({ required: { params: true, message: "ID is required" }, decimal: { params: 2, message: "Should be decimal"} });
this.Username = ko.observable(parsed.Username).extend({ required: {
onlyIf: function () {
return self.UserType() > 1;
}
}
});
this.WeeklyData = ko.observableArray([]);
var records = $.map(parse.WeeklyData, function (data) { return new Data(data) });
this.WeeklyData(records);
this.WeeklyData2 = ko.observableArray([]);
var records = $.map(parse.WeeklyData2, function (data) { return new Data(data) });
this.WeeklyData2(records);
}
ko.extenders.numeric = function (target, precision) {
var result = ko.dependentObservable({
read: function () {
return target().toFixed(precision);
},
write: target
});
result.raw = target;
return result;
};
Вот мои проблемы:
1) с наблюдаемым идентификатором () я хочу ограничить его двумя десятичными точками, поэтому я создал «числовой» расширитель проверки, но он не работает. Что-то не так с тем, как я его использую и как это исправить?
2) Кроме того, если я хочу ограничить наблюдаемую целыми числами, как я могу это сделать?
3) когда я определяю правило с условием (например, имя пользователя()), как мне определить для него собственное сообщение? Я смог сделать это для правил по умолчанию, но с условными правилами это не работает.
4) У меня есть два наблюдаемых массива WeeklyData1 и WeeklyData2, каждый из которых содержит объекты Data(). Я хочу иметь отдельные минимальные/максимальные правила для этих двух, например, мин/макс - 1,7 для WeeklyData1 и мин/макс - 1,150 для WeeklyData2. Как я могу это сделать?
4) Прямо сейчас мои сообщения об ошибках появляются прямо рядом с полем данных, но я хочу, чтобы все они отображались в одной сводке проверки, отображая «*» напротив поля. Мне сказали использовать Validation-bindings, но я не уверен, как его использовать, может кто-нибудь привести пример?
Я знаю, что вопросов много, но я признателен, если кто-то может помочь.
заранее спасибо