2012-08-24 96 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

相关问题