2013-11-28 5 views
1

Я новичок в использовании нокаута, и я пытаюсь заставить плагин проверки для работы. Однако IsValid всегда возвращается. Я также пробовал ViewModel.errors(). Length == 0 , но он всегда равен нулюПроверка нокаута isValid всегда возвращает true

Вот остальная часть моего кода, пожалуйста, помогите.

ko.validation.configure({ 
     registerExtenders: true, 
     messagesOnModified: true, 
     insertMessages: true, 
     parseInputAttributes: true, 
     messageTemplate: null 
    }); 


    function ViewModel(survey) { 
     // Data 
     var self = this; 


     self.ProjectNumber = ko.observable(); 
     self.StandardName = ko.observable(); 
     self.Name = ko.observable().extend({ required: true }); 

     self.save = function() { 
      console.log("Valid: " + ViewModel.errors.length); 
      if (ViewModel.errors().length == 0) { 
       $.ajax("@Url.Content("~/Survey/TEST/")", { 
        data: ko.toJSON(self), 
        type: "post", 
        contentType: 'application/json', 
        dataType: 'json' 
       }); 
      } else { 
       ViewModel.errors.showAllMessages(); 
      } 
     }; 


    } 

    ViewModel.errors = ko.validation.group(ViewModel); 

    ko.applyBindings(new ViewModel); 
</script> 
+0

Пробовали ли вы 'console.log ("Правильные:". + ViewModel.errors() длина) ; 'обратите внимание на скобки. – rdodev

ответ

1

ViewModel просто конструктор не является экземпляром вашей реализованной модели. Таким образом, вы применили свойства конструктора к объектам errors, а также попытались проверить этот конструктор, который не ощущается.

Изменение ViewModel к self в save метода:

self.save = function() { 
     console.log("Valid: " + self.errors.length); 
     if (ViewModel.errors().length == 0) { 
      $.ajax("@Url.Content("~/Survey/TEST/")", { 
       data: ko.toJSON(self), 
       type: "post", 
       contentType: 'application/json', 
       dataType: 'json' 
      }); 
     } else { 
      self.errors.showAllMessages(); 
     } 
    }; 

..и:

// create instance of model 
var vm = new ViewModel; 
// setup validation for instance 
vm.errors = ko.validation.group(vm); 
// apply bindings 
ko.applyBindings(vm); 
+0

Отлично! благодаря – ChrisSmathers

Смежные вопросы