0

Backbone と Backbone.ModelBinder を使用しています。

BackboneModelBinder を介してバインドされたテキスト フィールドが多数あります。すべてが期待どおりに機能しますが、テキスト フィールドに変更を加え、[保存] ボタンを押す前に最初にフィールドのフォーカスを外さない (入力フィールドをクリックしない) 場合、[保存] ボタンを 2 回押す必要があります。フィールド、次に実際に保存ボタン ハンドラを起動するための 2 回目 (最初に起動する必要があります)

(保存は、バックボーン イベントがバインドされた標準の html ボタンです)。

これがなぜなのかを知っている人はいますか?

これが理にかなっているといいのですが:|

助けや指示をありがとう

-カーク

4

1 に答える 1

1

これは、ModelBinder がデフォルトで「blur」または「change」イベントのモデルの属性に新しい値を設定するためです (入力のタイプによって異なります)。ソース コードを変更し、これら 2 つのメソッドでバインド イベントとして 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);
        }
    },
于 2012-08-24T17:27:02.867 に答える