我正在动态创建knockout viewmodel,这段代码运行正常。我想在此viewmodel中添加验证。我可以在此viewmodel中添加验证吗?这是一个好方法还是应该自己创建viewmodel并自己添加验证属性?或者任何客户端验证是否与数据注释一起使用?
var viewModel = function () {
var self = this;
self.States =ko.observableArray();
self.Countries =ko.observableArray();
self.showStates = ko.observable(false);
self.saveData = function (self) { //save data function };
}
var VM= new viewModel();
$.ajax({
success: function(data)
{
var newVM = ko.mapping.fromJS(data, {}, VM);
// newVM.FirstName, newVM.LastName
// I want to add validation in this newVM
}
答案 0 :(得分:2)
由于您使用KO Mapping插件加载数据,因此您还可以选择挂钩“创建”事件并根据需要添加单个项目的验证。如下所示:
$.ajax({
success: function(data)
{
var mappingOption = {
'FirstName': {
create: function (option) {
return ko.observable(option.data).extend({ required: true });
}
},
'LastName': {
create: function (option) {
return ko.observable(option.data).extend({ required: true });
}
}
}
// Now load your viewModel with the mapping option you just specified
var newVM = ko.utils.arrayMap(data, function (item) {
return ko.mapping.fromJS(item, mappingOption);
});
// ... From now on... in your newVM... firstName and lastName will be 'required'
}
希望这有帮助。
感谢。