我正在使用Backbone和Backbone.ModelBinder。
我有一堆通过BackboneModelBinder绑定的文本字段。一切都按预期工作但是当我对文本字段进行更改并且在点击SAVE按钮之前我没有首先关闭字段(单击输入字段)时,我必须按两次“保存”按钮 - 一次到取消聚焦字段,然后第二次实际触发保存按钮处理程序(应该第一次触发)
(保存是一个标准的html按钮,其中绑定了一个骨干事件)。
有没有人知道为什么会这样?
我希望这是有道理的:|
感谢您的任何帮助或指示
-Kirk
答案 0 :(得分:1)
这是因为ModelBinder默认情况下将新值设置为模糊的“模糊”或“更改”事件的属性(它取决于输入的类型)。您可以通过更改源代码来修改此行为,在这两种方法中将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);
}
},