Backbone.ModelBinder:为什么我要两次点击提交?

时间:2012-08-24 16:16:11

标签: backbone.js backbone-events

我正在使用Backbone和Backbone.ModelBinder。

我有一堆通过BackboneModelBinder绑定的文本字段。一切都按预期工作但是当我对文本字段进行更改并且在点击SAVE按钮之前我没有首先关闭字段(单击输入字段)时,我必须按两次“保存”按钮 - 一次到取消聚焦字段,然后第二次实际触发保存按钮处理程序(应该第一次触发)

(保存是一个标准的html按钮,其中绑定了一个骨干事件)。

有没有人知道为什么会这样?

我希望这是有道理的:|

感谢您的任何帮助或指示

-Kirk

1 个答案:

答案 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);
        }
    },