Как «целевой» обработчик кнопки панели инструментов, метод контроллера? - PullRequest
2 голосов
/ 19 февраля 2012

Hello!

Я хочу, чтобы этот обработчик "обработчик: onEventControler (???)" был удален из представления (он там не принадлежит)

Для вида сетки задайте закрепленный элемент cod:

        this.dockedItems = [{
        xtype: 'toolbar',
        items: [{
            xtype: 'newstation'
        },{
            id: 'add-persone-btn',
            xtype: 'button',
            itemId: 'add',
            text: 'Add',
            iconCls: 'icon-add',  
            handler: onEventControler(???)
        }, '-', {
            itemId: 'delete',
            text: 'Delete',
            iconCls: 'icon-delete',
            disabled: true,
            handler: function(){
                var selection = grid.getView().getSelectionModel().getSelection()[0];
                if (selection) {
                    store.remove(selection);
                }
            }
        }]
    }]

Я также пытался реализовать this.control , но не смог запросить кнопку selectorQuery.

Как правильно соблюдать архитектуру mvc extJs4?

спасибо.

Ответы [ 2 ]

1 голос
/ 19 февраля 2012

Вы должны быть в состоянии сделать что-то подобное внутри контроллера этого представления.

init: function () {
  this.control({
    'toolbar #add': {
      click: this.onAddStation
    }        
  });
}

Обработчик:

onAddStation: function(button, e, eOpts){
  //Handle
}

В качестве альтернативы, вы можете использовать конфигурацию "action" на вашей кнопке.

action: 'addstation'

Тогда вы могли бы иметь:

init: function () {
  this.control({
    'button[action=addstation]': {
      click: me.onAddStation
    }        
  });
}

http://docs.sencha.com/ext-js/4-0/#!/api/Ext.button.Button

0 голосов
/ 28 февраля 2012

Это метод "initComponent" для представления gridd вида:

initComponent: function () {
    this.plugins = [Ext.create('Ext.grid.plugin.RowEditing')];

    this.dockedItems = [{
        xtype: 'toolbar',
        items: [{
            xtype: 'button',
            itemId: 'add',
            text: 'Add',
            iconCls: 'icon-add',
            action: 'add-new-persone'
        }, '-', {
            itemId: 'delete',
            text: 'Delete',
            iconCls: 'icon-delete',
            action: 'delete-persone',
            disabled: true
        }, '-', {
            itemId: 'synch',
            text: 'Synchronization',
            iconCls: 'icon-synch',
            action: 'synch-persone'
        }]
    }];

    // paging bar on the bottom
    this.bbar = Ext.create('Ext.PagingToolbar', {
        store: this.store,
        displayInfo: true,
        displayMsg: 'Displaying topics {0} - {1} of {2}',
        emptyMsg: "No topics to display",
        items:[]
    });

    this._initColumns();
    this._initFilter();
    this.callParent(arguments);
},
...