코드가 작동하지 않는 데는 몇 가지 근본적인 이유가 있습니다. 첫 번째 예제에서는 이미 뷰 모델의 컨텍스트에 있으므로 ReserveViewModel.firstName을 사용할 필요가 없으며 두 번째 예제에서는 'self'내의 모든 내용을 검사합니다. 확인.
이
깊은 유효성 검사 - -
function Person(firstname, lastname) {
var firstName = ko.observable(firstname).extend({ required: true });
var lastName = ko.observable(lastname).extend({ required: true });
}
function ReserveViewModel(){
self.person = ko.observable(new Person('John', 'Jingleheimer'));
self.continue = function(){
var errors = ko.validation.group(self.person, { deep: true });
if (errors.length == 0) {
//display second div
}
else{
self.errors.showAllMessages();
}
}
}
이 사람의 모든 속성을 확인하고 두 가지 방법 (KO.Validation와 함께 일 간략를 가진 내가보기로)이 고양이를 피부 쉬운 방법이 있습니다 유효성을 확인하는 '하위'속성입니다.
다음 예는 단순히에 대해 확인하는 객체의 배열을 생성하는 것입니다 -
function myViewModel() {
var self = this;
self.firstName = ko.observable().extend({ required: true });
self.lastName = ko.observable().extend({ required: true });
self.someOtherProperty = ko.observable().extend({ required: true });
var firstStepValidation = [
self.firstName,
self.lastName
];
var secondStepValidation = [
self.someOtherProperty
];
self.continue = function(){
var errors = ko.validation.group(firstStepValidation);
if (errors.length == 0) {
//display second div
}
else{
self.errors.showAllMessages();
}
}
}
이것은 당신 '청크'테스트 할 배열에 당신의 관찰 가능한 대상을 수 있습니다. 이것은 아마도 별도의 뷰 모델을 생성하는 것보다 쉽습니다.
이렇게하면 첫 번째 방법으로 작동하게됩니다. 두 번째 방법을 사용하는 이유는 무엇입니까? 두 개의 개별 뷰 모델을 사용하고 두 가지 유효성 검사 규칙 그룹을 사용하는 것이 좋을까요? –
무슨 뜻인지 잘 모르겠습니다. 나는 내가 보여준 것과 함께 유효성 검사 또는 전체 유효성 검사를 얻지 못합니다. 두 개의 분리 된 뷰 모델을 만들 수 있다고 생각합니다. 그런 식으로 생각하지 않았습니다. 그럼에도 불구하고 필자는 필자가 문서에서 그런 식으로 표시 될 때 왜 필자의 예제가 작동하지 못하는지 혼란 스럽다. – user1852176
질문을 읽을 때 첫 번째 방법이 효과가 없었던 이유가 아직 명확하지 않았습니다. –