2011-08-04 6 views
3

グリッドでキーを処理する方法を探しています。 私は密接にここに例が続いてきました: http://www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-1 http://www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-2
http://www.sencha.com/learn/the-mvc-application-architecture/ExtJS 4とその新しいMVC:grid:キーの扱い方は?

だから今、すべてが正常に動作しますが、私は私のグリッドにキーを処理したいと思います。

"this.control({})"と言うと、userlistに関する別のイベントを追加するだけですが、グリッドには「keypress」イベントがないようです。

どのようにすればいいのでしょうか(また、私は新しいMVCパターンをどのようにすべきですか)

Ext.define('GS.controller.Users', { 

    extend: 'Ext.app.Controller', 

    models: [ 
     'User' 
    ], 

    stores: [ 
     'Users' 
    ], 

    views: [ 
     'user.List', 
     'user.Edit' 
    ], 

    init: function() { 
     this.control({ 
      /* (!) Actions in 'userlist' */ 
      'userlist': { 
       selectionchange: this.userListSelectionChange, 
       itemdblclick: this.userEdit 
      }, 
      'userlist button[action=create]': { 
       click: this.userCreate 
      }, 
      'userlist button[action=delete]': { 
       click: this.userDelete 
      }, 
      /* (!) Actions in 'useredit' */ 
      'useredit button[action=create]': { 
       click: this.userCreateValidate 
      }, 
      'useredit button[action=save]': { 
       click: this.userEditValidate 
      } 
     }); 
    }, 

    userListSelectionChange: function(grid, selections, options) { 
     var panel = grid.view.up('panel'), 
      button = panel.down('button[action=delete]'); 

     button.setDisabled(selections.length === 0); 
    }, 

    userCreate: function(button) { 
     /* Using Ext.create() to pass variable create:true 
     * instead of the shortcut: 
     * var view = Ext.widget('useredit'); 
     */ 
     var view = Ext.create('GS.view.user.Edit', { 
      create:true 
     }); 
    }, 

    userCreateValidate: function(button) { 
     var win = button.up('window'), 
      form = win.down('form'), 
      values = form.getValues(); 

     this.getUsersStore().add(values); 
     this.getUsersStore().sync(); 
     win.close(); 
    }, 

    userEdit: function(grid, record) { 
     var view = Ext.widget('useredit'); 
     view.down('form').loadRecord(record); 
    }, 
    userEditValidate: function (button) { 
     var win = button.up('window'), 
      form = win.down('form'), 
      record = form.getRecord(), 
      values = form.getValues(); 

     record.set(values); 
     win.close(); 
     this.getUsersStore().sync(); 
    }, 

    userDelete: function(button) { 
     var panel  = button.up('panel'), 
      selection = panel.getSelectionModel().getSelection()[0]; 

     if (selection) { 
      var store = this.getUsersStore(); 
      store.remove(selection); 
      store.sync(); 
     } 
    } 
}); 

答えて

6

ビューを作成した後、あなたのlaunch: function() {...}右でKeyMap(s)を定義します。

+1

ありがとうございます。残念なのは、Senchaのウェブサイトよりもstackoverflowで答えが早くなるということです! –

+2

あなたはそれを言うときとても親切です。私は物事ははるかにいたずらにしていると思う。答えはありません。決して。またはまったく役に立たない。私は、ほんの少しの助けを借りているフレームワークで、とても多くの時間を費やすことを残念に思います。だから質問をして4日後、もし私が彼らのフォーラムで回答が得られなかったら(私は8時のうちに7回だった)、私は風で唾を吐くように感じるので、ここに投稿する。再度、感謝します。 –

+0

@oliver Senchaへようこそ – cbmeeks

関連する問題