Knockout.js Knockoutjs仅验证chind类

Knockout.js Knockoutjs仅验证chind类,knockout.js,knockout-validation,Knockout.js,Knockout Validation,我使用knockoutjs3.0.0和knockoutjsvalidate,大多数时候它们工作得很好。现在我在尝试验证局部视图模型时遇到了问题。 像这样: function DataViewModel() { var self = this; self.username = ko.observable("").extend({ required: {message:"User name is required!" }}); self.password =

我使用knockoutjs3.0.0和knockoutjsvalidate,大多数时候它们工作得很好。现在我在尝试验证局部视图模型时遇到了问题。 像这样:

 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 () {

          if (self.isValid()) {
              self.errors.showAllMessages();
              return false;
          }
           $("#loginform").submit();
      };
  }
我还有控制页面属性的页面视图模型

  function PageViewModel(){
    var self=this;
    self.contentheader=ko.observable("Login");
    self.usernamelabel = ko.observable("User Name");
    self.passwordlabel = ko.observable("Password");
  }
我创建的ViewModel如下所示:

 function ViewModel()
  {
    var self=this;
    self.data= ko.validatedObservable(new DataViewModel());
    self.page= new PageViewModel();
  }
最后,我绑定到KO var vm=new ViewModel(); ko.应用绑定(vm)

我为什么这样做是因为: 在DataViewModel中,我存储将从服务器传递或加载的数据,页面视图模型我控制该页面的行为,当用户向服务器提交数据时,我应该对DataViewModel进行验证。但它不起作用,我看到KO模型产生了这样的错误

 TypeError: obsv is undefined

任何人都可以提供帮助?

在您的情况下,您可以在该模型中处理您的
数据视图模型的验证。在模型中添加一个可观察项来跟踪验证,如下所示

self.errors=ko.validation.group(self)


并将主视图模型中的
DataViewModel
实例更改为正常的
ko.observable
,而不是经过验证的observable。我有

这很有效。但我还有一个麻烦。当从浏览器还原用户名和密码时,knockoutjs validate不起作用。@Ericyu67您能详细说明一下(可能会在编辑原始问题时发布一些还原这些字段值的代码)?我测试了您的示例代码,只有输入一些值,它才起作用。但当我尝试将值复制/粘贴到textbox时,它无法触发validate。也许这里不是问这个问题的好地方。