Я начал использовать KNOCKOUT с валидациями расслоения плотной http://ericmbarnard.github.com/Knockout-Validation/ двигателя проверкой, и я не ясно, как сделать следующее:как? с KNOCKOUT Validations
1) Скажите, что я хочу, чтобы установить конкретное поле, необходимые на основе состояние. Как мне это сделать? , например.
this.Username = ko.observable(). Extend ({required: true}); // make required = true, только если this.UserType = 2 и т. д.
2) У меня есть сообщения проверки, стреляющие рядом с проверяемым полем. Я хочу, чтобы рядом с полем появлялось «*» и отображалось сообщение об ошибке в поле validationsummary в нижней части страницы. Все ошибки проверки должны отображаться там. Как это сделать?
3) Форма представления, которую следует избегать до тех пор, пока не будет принята форма проверки. Хорошо, я получаю сообщения об ошибках проверки, но форма отправляется. Поэтому я думаю, что я делаю что-то неправильно. Ниже приведен мой код:
$(document).ready(function() {
var model;
// enable validation
ko.validation.init();
$.ajax({
type: "POST",
url: SERVER_PATH + '/jqueryservice/DataAccessService.asmx/GetData',
async: false,
data: "{ }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result, status) {
model = new ViewModel(result);
ko.applyBindings(model);
},
error: GetDataError
});
$('#submit').click(function() {
var data = ko.toJS(model);
delete data.Vehicles;
delete data.CopyWeeks;
delete data.SetupTotal;
delete data.CloseTotal;
var mappedItems = ko.utils.arrayMap(data.DailyItemList, function (item) {
delete item.Add;
delete item.Delete;
return item;
});
data.DailyItemList = mappedItems;
$.ajax({
type: "POST",
url: SERVER_PATH + '/jqueryservice/DataAccessService.asmx/ProcessData',
async: false,
data: ko.toJSON(data),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result, stat) {
alert(success);
return false;
},
error: function (e) {
alert(e);
}
});
});
});
Заранее за вашу помощь.
EDIT: Я видел, что я могу установить конфигурацию проверки следующим образом: ko.validation.configure ({ decorateElement: ложь, errorMessageClass: 'ErrorMsg', insertMessages: ложные, parseInputAttributes: правда , messageTemplate: 'sErrorMsg' }); ko.validation.init();
, но я не знаю, как я могу определить мой шаблон сообщения об ошибке 'sErrorMsg'
ОК, я получил 1) и 3) работает. Большое спасибо. Но 2 все еще остается загадкой для меня. Я просмотрел связанную с вами документацию Github, но не могу понять, как ее использовать. Можете ли вы привести пример? Кроме того, что делает yourViewModel.Errors.showAllMessages()? Я не мог заставить это работать. – devC
Можете ли вы мне помочь? – devC
yaa sure, пожалуйста, проверьте обновленный ответ и скрипку, и дайте мне знать, есть ли какие-либо дальнейшие запросы. – gaurav