1

Sencha ExtJS フレームワークを使用する場合、ビューのイベントはそのビューのコントローラー内に存在します。コントローラーを使用していない場合、イベントをどこに保存しますか。

たとえば、MVC アプリケーションにユーザーのグリッド (userlist) があり、"itemdblclick" イベントがあるとします。非 MVC アプリケーション内に「itemdblclick」をどのように実装しますか?

Ext.define('AM.view.user.List' ,{
    extend: 'Ext.grid.Panel',
    alias: 'widget.userlist',
    title: 'All Users',

    // we no longer define the Users store in the `initComponent` method
    store: 'Users',

...

});



Ext.define('AM.controller.Users', {
    extend: 'Ext.app.Controller',
    stores: ['Users'],
    models: ['User'],

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

    init: function() {
        this.control({
            'viewport > userlist': {
                itemdblclick: this.editUser
            },
            'useredit button[action=save]': {
                click: this.updateUser
            }
        });
    },

    editUser: function(grid, record) {
        var view = Ext.widget('useredit');
        view.down('form').loadRecord(record);
    },

    updateUser: function(button) {
        console.log('clicked the Save button');

        var win = 
            button.up('window'),
            form = win.down('form'),
            record = form.getRecord(),
            values = form.getValues();

        record.set(values);
        win.close();

        // synchronize the store after editing the record
        this.getUsersStore().sync();
    }

});
4

1 に答える 1

2

次のように、コンポーネント (実際には Observable) の listeners プロパティに存在する必要があります。

http://jsfiddle.net/3LCm4/7/

ドキュメント:

http://docs.sencha.com/ext-js/4-1/#!/api/Ext.util.Observable-cfg-listeners

于 2012-07-18T23:43:15.777 に答える