我在将命名空间与淘汰赛验证相结合时遇到了麻烦。这打破了验证:
myNameSpace = {
viewModel: {
name: ko.observable().extend({ digit: { digit: true, message: "digits only"} })
}
};
ko.validation.init({});
ko.applyBindings(myNameSpace);
相反:
myNameSpace = {
viewModel: {
name: ko.observable().extend({ digit: { digit: true, message: "digits only"} })
}
};
ko.validation.init({});
ko.applyBindings(myNameSpace.viewModel);
哪种方法正常。
有人可以向我解释一下这个区别吗?
答案 0 :(得分:0)
这是关于对象和属性的存在。您可能已经绑定了“name”属性。如果你执行ko.applyBindings(myNameSpace);, ko在myNameSpace对象中查找属性“name”。这不存在。
使用ko.applyBindings(myNameSpace.viewModel);绑定它时,它会在视图模型对象中查找名称。它确实找到它并且因此能够绑定到属性或可观察的。
然而,在第一种情况下,如果您将data-bind与“value:viewModel.name”一起使用,它将起作用,因为它将查找myNameSpace对象的viewModel属性的name属性。