Сенча Архитектор 3.2. Почему кнопки отправляют события двух нажатий? - PullRequest
0 голосов
/ 14 апреля 2020

Я создаю веб-приложение, используя Ext js в Sencha architect. Я создавал приложения с помощью этого инструмента в течение почти 7 лет, поэтому я знаком с инструментом и архитектурой. Но теперь каждая кнопка отправляет 2 события клика. Я добавил простую кнопку с идентификатором 'testButton'

      {
            xtype: 'panel',
            region: 'south',
            id: 'KPIWindowStatusBarPanel',
            margin: '0 5 5 5',
            manageHeight: false,
            dockedItems: [
                {
                    xtype: 'toolbar',
                    dock: 'top',
                    items: [
                        {
                            xtype: 'tbfill'
                        },
                        {
                            xtype: 'button',
                            id: 'testButton',
                            itemId: 'testButton',
                            text: 'TestButton'
                        },
and so on

Мой контроллер отображается нормально

    control: {
        "#testButton": {
            click: 'onTestButtonClick'
        }
and so on

Фактическая функция - просто console.log ()

    onTestButtonClick: function(button, e, eOpts) {
        console.log('test button click');

    },

Но Firebug показывает, что эта и любая другая кнопка отправляет события 2-х нажатий каждый раз, когда они нажимаются.

Кто-нибудь знает, почему это происходит? Я никогда не видел этого раньше ни в одном из наших других приложений.

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Это не имеет смысла, и я добавлю его в список причин, по которым я должен отойти от Sencha Architect и Ext JS и перейти к Angular JS. Я потерял счет тому, сколько раз у нас возникали невозможные проблемы с приложением, созданным в Sencha Architect за последние 7 лет.

У меня было 2 контроллера. Мой главный контроллер и второй контроллер под названием KPIController просто для управления всеми функциями этой панели c. У меня была функция «loadData», которая загружает данные в панель сетки в KPIControler. Когда я переместил этот метод из моего KPIController в MainController, все кнопки снова начали посылать отдельные клики.

Это не имеет никакого смысла.

0 голосов
/ 14 апреля 2020

Проблем нет. Вы должны искать в другом месте, может быть, вы дважды щелкнете?

Взгляните на пример по скрипке: https://fiddle.sencha.com/#view / editor & fiddle / 356g

Ext.define('Fiddle.controller.ButtonController', {
    extend: 'Ext.app.Controller',

    control: {
        "#testButton": {
            click: 'onTestButtonClick'
        }
    },

    onTestButtonClick: function (button, e, eOpts) {
        console.log('test button click');

    }
});

Ext.application({
    name: 'Fiddle',
    controllers: ['ButtonController'],
    launch: function () {

        Ext.create('Ext.panel.Panel', {
            height: 200,
            dockedItems: [{
                xtype: 'toolbar',
                dock: 'top',
                items: [{
                    xtype: 'tbfill'
                }, {
                    xtype: 'button',
                    id: 'testButton',
                    itemId: 'testButton',
                    text: 'TestButton'
                }]
            }],
            width: 250,
            renderTo: Ext.getBody()
        });
    }
});
...