Knockout 3.0 Testing

by rwisch45

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/knockout/3.0.0/knockout-min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.4.1/knockout.mapping.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/knockout-validation/1.0.2/knockout.validation.min.js"></script>
Username: <input type="text" data-bind="value: data().username" />
Password: <input type="text" data-bind="value: data().password" />

<button type="button" data-bind="click: data().login">Login</login>

JavaScript

function DataViewModel() {
      var self = this;

      self.username = ko.observable().extend({ required: {message:"User name is required!" }});
      self.password = ko.observable().extend({ required: {message:"Password is required!" }});

      self.login = function () {
          debugger;

          if (self.dataerrors().length > 0) {
              self.errors.showAllMessages();
              return false;
          }
          alert('submitted!');
      };
     
     self.dataerrors = ko.validation.group(self);
     
     
  }

function PageViewModel(){
    var self=this;
    self.contentheader = ko.observable("Login");
    self.usernamelabel = ko.observable("User Name");
    self.passwordlabel = ko.observable("Password");
  }

function ViewModel()
  {
    var self=this;
    self.data= ko.observable(new DataViewModel());
    self.page= new PageViewModel();
      
  }

ko.validation.init();

ko.applyBindings(new ViewModel());