Валидиране на нокаут след картографиране

Аз съм нов в нокаута, така че моля, имайте търпение.

Опитвам се да използвам плъгин за картографиране, за да картографирам Json данните, получени от сървъра, към съществуващ екземпляр на viewModel. Мога да направя това без никакъв проблем. Но в моя viewModel използвах плъгин за валидиране, така че веднага щом картографирам данни и ги свържа с потребителския интерфейс, валидирането стартира и веднага показва информацията за грешката.

Има ли начин това съобщение за грешка да не се показва, докато не се щракне върху бутона за изпращане. Или правя нещо нередно?

Ето връзката на Jsfiddle

По някаква причина SO не ми позволява да изпратя този въпрос, освен ако не е придружен с код, така че ето кода на javascript, копиран от jsfiddle -

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

 var data = { name: null, email: "[email protected]" };

 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);

person Sai    schedule 16.01.2014    source източник


Отговори (1)


Един подход, който можете да опитате, е първоначално да скриете всички съобщения за валидиране и след това да добавите функция към вашия модел на изглед, която ги показва отново. След това ще извикате тази функция, когато се щракне върху бутона за изпращане.

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

var data = { name: "Joe Shmo", email: "[email protected]" };

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/

person Lee Bailey    schedule 16.01.2014
comment
Благодаря Лий.. това е работа. Мислех, че има правилен начин да се справя с това или правя нещо нередно. Проверявам документацията, скоро ще актуализирам всички открития. - person Sai; 17.01.2014