2012-08-24 94 views
0

我正在使用Backbone和Backbone.ModelBinder。Backbone.ModelBinder:爲什麼我必須點擊兩次提交?

我有一堆通過BackboneModelBinder綁定的文本字段。一切都按預期工作,但是當我對文本字段進行更改時,並且在點擊SAVE按鈕之前,我並不先點擊字段(單擊輸入字段),我必須點擊保存按鈕兩次 - 一次以使對焦字段,然後第二次實際觸發保存按鈕處理程序(應該已經第一次觸發)

(保存是一個標準的html按鈕,並綁定了骨幹事件)。

有沒有人有任何這方面的知識?

我希望這是有道理的:

感謝任何幫助或方向

-Kirk

回答

1

這是因爲ModelBinder的默認設置的新值的「模糊」或「改變」事件模型的屬性(其dependes輸入的類型) 。您可以通過更改源代碼,在以下兩種方法中將綁定事件添加爲綁定事件來修改此行爲:

_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將工作嗯 – Kirk

+0

我沒有注意到不重要的行爲,也許你有其他的東西在你的表單字段上運行,就像某種驗證?您可以嘗試使用發送按鈕調用unbind()以避免它,但我不知道它是否可以幫助... – Ingro

相關問題