2013-12-09 2 views
1

백본을 배우기 위해이 https://tutsplus.com/course/connected-to-the-backbone/ 강의를 따르면서 그 모델 내에 변수의 값을 설정할 때마다 validate() 함수 (있는 경우)가 호출된다는 사실이 알려졌습니다. 나는이 모델을 작성했습니다 :백본 모델의 유효성 확인

var PersonModel = Backbone.Model.extend({ 

    defaults: { 
     name: 'Kamran Ahmed', 
     rollNo: '1224', 
     email: '[email protected]' 
    }, 

    validate: function (attrs){ 
     if (!attrs.name) { 
      return 'You must provide a name'; 
     } 
     if (attrs.rollNo < 0) { 
      return 'Roll Number must be positive'; 
     } 
    } 
}); 

그리고 나는 다음을 시도하고있다 :

var person = new PersonModel(); 
person.set('rollNo', -100) // trying to violate the validation rule 

그러나 그것은 결코 즉 값 -100 여전히 rollNo에 할당되고 유효성을 검사하지 않습니다. 게다가 person.set('rollNo', -100) 일 때 전체 객체를 계속 반환하지만 유효성 검사 규칙을 위반하면 false를 반환해야합니다. 여기서 내가 뭘 잘못하고 있니? 유효성 검사가 수행되지 않는 이유는 무엇입니까? 문서에서

답변

1

는 :

person.set({'rollNo':-100},{validate:true}) 

당신은 Backbone.Model에 대한 validate에 읽을 수 있습니다

By default validate is called before save, but can also be called before set if 
{validate:true} is passed. 

그래서 당신이 좋아하는 그것을 사용해야합니다.

사이드 노트로 : 자습서는 현재 버전이 1.1.0 인 반면 백본 0.9.2에 대한 것입니다. 최신 튜토리얼을 찾거나 Change Log을 읽어보십시오.

관련 문제