映射后淘汰赛验证(Knockout validation after Mapping)

2019-10-19 05:44发布

我是新来的淘汰赛,请多多包涵。

我试图使用映射插件从服务器接收到一个现有的视图模型实例的JSON数据映射。 我能够做到这一点没有任何问题。 但在我的ViewModel我有这么只要我的地图数据和其绑定到UI,验证踢它会立即显示错误信息使用验证插件。

有没有办法,直到点击提交按钮,以不显示该错误消息。 还是我做错了什么?

这里是的jsfiddle 链接

出于某种原因,所以没有让我提出这个问题,除非伴有代码所以这里是从的jsfiddle复制的JavaScript代码 -

 ko.validation.configure({
      parseInputAttributes: true
 });

 var data = { name: null, email: "joe@shmo.com" };

 function vm(){
   this.name = ko.observable().extend({required:true});
   this.email = ko.observable().extend({required:true});
   this.validationCheck = ko.validatedObservable(this);
 }


 var viewModel = ko.mapping.fromJS(data, {}, new vm());
 ko.applyBindings(viewModel);

Answer 1:

一种方法,你可以尝试是最初隐藏所有的验证消息,然后添加功能,以您的视图模型是再次显示它们。 这样,你会调用该函数被点击提交按钮时。

    ko.validation.configure({
    parseInputAttributes: true
});

var data = { name: "Joe Shmo", email: "joe@shmo.com" };

var validationMapping = {
    'name': {
        create: function(options) {
            return ko.observable(options.data).extend({required: true});
        }
    }
}

var viewModel = ko.validatedObservable(ko.mapping.fromJS(data, validationMapping));

viewModel().showValidation = function()
{
    $$('.validationMessage').set('style', 'display:inline');
    return viewModel.isValid();
}
ko.applyBindings(viewModel);

演示: http://jsfiddle.net/bS62w/3/



文章来源: Knockout validation after Mapping