Backbone.js에서 모델 유효성 검사의 이상한 동작이 발생했습니다. 모델이 먼저 생성 백본 모델 유효성 검사
하나가 source에서 볼 수 있듯이 백본, 파라미터로 지정된 맵{bar: 42}
전달
foo.set()
를 호출
var foo = new Foo({
bar: 42
});
있다.
silent === true
를 가진 것은 이런 맥락에서 이해가되지 않는
change
이벤트를 트리거 피할 수 있기 때문에이 과정에서, 또한, 라인
this.set(attributes, {silent : true});
이 말이 같이 옵션 {silent: true}
을 전달합니다.
내가 이해할 수없는 몇 가지 이유가 있지만 silent === true
도 은 유효성 검사를하지 않습니다.; 라인
if (!options.silent && this.validate && !this._performValidation(attrs, options)) return false;
에서 소스를 볼 그래서 모델을 표시입니다 만들어 질 때 검증되지 않지만 일부 속성이 변경 될 때 그들은 보통 결코. 더욱이 유효성 검사의 존재는 완전히 직교하는 이벤트 인 change
이벤트를 전송하는 동작과 불가분의 관계에 있습니다.
누구에게 설명 할 수 있습니까? 이 문제를 해결할 수있는 깨끗하고 미래를 보장하는 방법은 무엇입니까?
나는 수동으로 _performValidation
를 호출 할 수 있지만,이 두 가지 단점이 있습니다
- 먼저, 그것은 단순히
- 초을 잊을 수있는 일이며,
_performValidation
는 API의 일부가 아니며 어쩌면이 변경됩니다 향후 릴리스에서.
그래, 고맙다, 내가 뭔가를 놓치고 있다고 생각했다. – Andrea
버전 0.9.9 업데이트 : "자동"변경 중에도 유효성 검사가 수행됩니다.이 변경은 isValid 메서드가 제거되었음을 의미합니다. 옵션에 오류 콜백이 지정되어 있어도 유효성이 검증되지 않으면 오류가 트리거됩니다. – romanlv