2014-02-07 10 views
6

백본 스틱이있는 백본 유효성 검사를 사용하려고 할 때 사용자가 입력 할 때 한 번에 하나의 특성을 확인하려고합니다. 그러나 사용자가 값을 입력하면 모델의 모든 속성이 사용자가 변경 한 것 대신에 유효성을 얻습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?백본 스틱이있는 백본 유효성 검사 - 모든 특성이 변경 될 때 유효성이 확인됩니다.

내보기 : 모델 (1)의 값을 설정할 때 setOptions 통과

bindings:{ 
     '#username' : { 
      observe:'username', 
      setOptions: { 
       validate:true 
      } 
     }, 

     '#email' : { 
      observe:'email', 
      setOptions: { 
       validate:true 
      } 
     }, 

     '#firstname' : { 
      observe:'firstName', 
      setOptions: { 
       validate:true 
      } 
     }, 

....... 

onShow: function(){  
     Backbone.Validation.bind(this, { 
       valid: function(view, attr) { 
       alert('VALID - ' + attr); 
       }, 
       invalid: function(view, attr, error) { 
       alert('INVALID - ' + attr); 
       } 
      }); 

     this.stickit(); 

    }, 
+0

가이 해결 모델의 값 (최소 속성 귀하의 유효성을 검사) 기본값을 제거해야 일을? –

+0

언제든지 해결하셨습니까? 같은 문제가 붙어 –

+0

미안하지만, 나는이 문제를 해결하지 못했다. 내가 기억하는 것부터 유세 시스코의 답변을 읽는 것에서는 백본 모델의 동작 때문일 수 있습니다. – Francium123

답변

2

모두가 사용된다. validate: true을 Backbone 모델의 설정 기능에 전달하면 모델의 값뿐만 아니라 설정 함수 (2)에 전달 된 값의 유효성을 검사합니다. 이는 새 값을 설정할 때마다 전체 모델의 유효성을 검사한다는 것을 의미합니다. 지금 다시 보게. 너는 아무 잘못도없는거야.

아마도 유효성 검사를 여러 개의 개별 함수로 분리하고 속성 변경시 필요한 함수 만 호출 한 다음 모든 개별 함수를 호출하여 전체 모델의 유효성을 검사하는 유효성 검사 함수를 변경하면이 문제를 해결할 수 있습니다.

+0

자세히 설명해 주시겠습니까? –

+1

여기서 중요한 문제는'''validate : true''가 통과 될 때 백본이 전체 모델의 유효성을 검사한다는 것입니다. 이에 대한 한 가지 해결책은 별도의 유효성 검사 기능 (예 : validateCountry, validatePhone)을 작성한 다음 국가 및 전화 변경을위한 이벤트 리스너를 설정하여 유효성 검사 기능을 트리거하는 것입니다. 그러나이 솔루션은 훌륭하지 않으며 응용 프로그램에 복잡성을 추가합니다. 다음은이 솔루션이 어떻게 보이는지에 대한 불완전한 요지입니다 (끝내기에는 너무 복잡합니다). https://gist.github.com/yousefcisco/5ba5d571eff103650c87 – yousefcisco

0

이것은 나에게도 일어난 일입니다. 제 경우에는 모델의 기본값을 ''(공란)로 설정했습니다. 그들을 제거하고이 행해져 Yout보기 바인딩에 backbone.stickitsetOptions 개체의 backbone.validationforceUpdate 매개 변수를 사용하여

0

시도를했다. 그것은 나를 위해 일했고 비슷한 종류의 문제가있었습니다.

yousefcisco에서 언급 한 것처럼 백본은 전달 된 옵션에 따라 모델에서 집합 또는 저장시 모든 특성의 유효성을 검사하지만 내 경우에는 각 특성을 개별적으로 유효성 검사가 필요하지는 않지만 특성은 그렇지 않습니다. 하나의 속성 만 유효하지 않은 경우라도 설정하면 forceUpdate: true을 시도하고 마술을했습니다.

여기를 확인하십시오이를 위해 http://thedersen.com/projects/backbone-validation/#configuration/force-update

0

+0

자세히 설명해 주시겠습니까? 이 답변을 실제로 사용했다면 http://meta.stackoverflow.com/q/253804/3664960 답변을 개선하는 방법을 읽어보십시오. – davejal