1

Web サイトの 1 ページで非常に単純な Backbone アプリを開発しましたが、フォームに問題があります。

リスト (アイテムのコレクション) があり、アイテムの名前をクリックすると、フォームに置き換えられます。

名前を編集してEnterキーを押すと問題なく動作しますが、次の解決策が見つかりません:テキストを変更しなかった場合。

現在、アイテムをクリックしてフォームをロードすると、for を終了する場合は、名前を変更して Enter キーを押す必要があります。

これが私の編集フォームのバックボーン ビューです。

var EditForm = Backbone.View.extend({
    model: Item,
    template: _.template('<form>' +
        '<input name=name value="<%= name %>" />' +
        '</form>'),
    events: {
        submit: 'save'
    },
    save: function(e){
        e.preventDefault();
        var newName = this.$('input[name=name]').val();
        this.model.set({name: newName}); 
        this.model.save();
    },
    render: function(){
        this.$el.html(this.template(this.model.attributes));
        return this;
    }
});

誰かがすでにそれを実装している場合、例を挙げていただければ幸いです。

ありがとうございました

4

1 に答える 1

0

ビューに「キーアップ」ハンドラーを用意し、そのハンドラーでキーコードを確認する必要があります。次のようなもの:

//modify your events object like this
events:{
   submit: "save",
   "keyup": "checkAndHandleCancel"
}

//handler
checkAndHandleCancel: function(e){
 if (e.keyCode == 27) { 
  //handle your cancel action here
 } 
}

これは、フォーカスがフォームにある場合にのみ機能することに注意してください。グローバルな「キャンセル」を処理する必要がある場合は、ドキュメントに同様の「キーアップ」ハンドラーを用意してから、そのイベントをビューに伝達する必要があります。

于 2013-07-29T15:50:07.310 に答える