2012-08-24 4 views
0

Backbone 및 Backbone.ModelBinder를 사용하고 있습니다.Backbone.ModelBinder : 왜 두 번 제출해야합니까?

나는 BackboneModelBinder를 통해 바인딩 된 많은 텍스트 필드를 가지고 있습니다. 모든 것이 예상대로 작동하지만 텍스트 필드를 변경하고 SAVE 버튼을 누르기 전에 입력 필드를 먼저 클릭 해제하지 않으면 Save 버튼을 두 번 눌러야합니다. 두 번째로 실제로 저장 버튼 처리기를 시작합니다 (처음 시작해야 함)

(저장은 백본 이벤트가 바인딩 된 표준 HTML 버튼입니다).

왜 이런 사람인지 전혀 알지 못합니까?

나는 이것이 의미가 있기를 바란다 : | 어떤 도움이나 방향

덕분에

ModelBinder를 기본적으로 "흐림"또는 "변화"이벤트에 대한 모델의 속성에 새 값을 설정하기 때문이다

-Kirk

답변

1

(이것은 입력의 종류에 dependes) . 당신은 그 두 가지 방법으로 구속력 이벤트의 keyup 추가, 소스 코드를 변경하여이 동작을 수정할 수 있습니다 : 당신의 빠른 응답

_bindViewToModel:function() { 
     $(this._rootEl).delegate('', 'change keyup', this._onElChanged); 
     // The change event doesn't work properly for contenteditable elements - but blur does 
     $(this._rootEl).delegate('[contenteditable]', 'blur keyup', this._onElChanged); 
    }, 

    _unbindViewToModel: function(){ 
     if(this._rootEl){ 
      $(this._rootEl).undelegate('', 'change keyup', this._onElChanged); 
      $(this._rootEl).undelegate('[contenteditable]', 'blur keyup', this._onElChanged); 
     } 
    }, 
+0

안녕하세요, 감사합니다. 그래서 기본적으로, 나는 이것을 시도해 보았습니다. 그러나 여러분이 타이핑 할 때 필드를 초점을 맞추고 끔찍한 경험을하기 때문에 훌륭한 해결책은 아닙니다. 제출 단추에 직접 _unbindViewToModel을 호출하면 hmm – Kirk

+0

작동하지 않을지 궁금합니다. 초점을 맞추지 않는 동작이 눈치 채지 못합니다. 양식 필드에 다른 종류의 유효성 검사가있을 수 있습니다. Send 버튼을 사용하여 unbind() togheter를 호출 할 수는 있지만 도움이 될지 모르겠다. – Ingro