Нажатие кнопки Sencha Touch 2 не работает после развертывания

У меня есть приложение sencha touch 2, которое работает безупречно без развертывания. Однако, когда я развертываю либо для тестирования, либо для производства, либо для нативного, у меня есть несколько кнопок внутри представления навигации с событиями касания, которые больше не будут работать. Ошибки не отображаются. Я не могу понять, почему это происходит только после развертывания.

Вот соответствующий код:

Контроллер:

control: {

        '#main-function': {
            tap: 'loadFunction'
         },


         loadMyBoat: function() {
              this.getProducts().up().push({
          xtype: 'myxtype',
         })



         Ext.getStore('Items').getProxy().setUrl('myurl');
         Ext.getStore('Items').load();
},

Вид:

Ext.define('MyBoat.view.ItemList', {
extend: 'Ext.navigation.View',
xtype: 'myxtype',

config: {
    title: 'My Title',
    styleHtmlContent: true,
    defaultBackButtonText: 'Items List',

    items: {
        xtype: 'list',
        itemTpl: '{Field_Name}',


        title: 'Tap on a boat to access further details',
        store: 'Boats'
    }
}
})

Кто-нибудь когда-нибудь сталкивался с этим? Любая помощь будет принята с благодарностью.


person seedg    schedule 08.06.2012    source источник
comment
Нет ошибок. Это странная часть: / Просто ничего не происходит, когда я нажимаю на нее. Насколько я могу судить, прослушиватель контроллера не выполняется. Тем не менее, контроллер работает, так как я могу успешно войти в систему ... Только когда я нажимаю эти кнопки, он не работает.   -  person seedg    schedule 08.06.2012


Ответы (2)


Откройте редактор DOM (в хроме, я думаю, F12). Ваш селектор управления выбирает #main-function, поэтому вы должны убедиться, что это допустимый селектор.

В консоли окна инструментов разработчика введите:

Ext.ComponentQuery.query('#main-function')

Это должно быть то, что пытается контролировать контроллер.

person Bryce Fischer    schedule 08.06.2012

После долгих отладок мне удалось решить проблему. Оказывается, использование следующего кода для создания любого компонента не будет работать после развертывания:

new Ext.button({.....})

Вместо этого вы должны использовать xtypes, а не новое ключевое слово. Я думаю, это как-то связано с тем фактом, что деплойер хранит весь код js в одном файле, и, таким образом, поскольку я использовал ключевое слово new, он создавался где-то в файле js, хотя на самом деле он не будет существовать в контексте . Странно то, что он не показывает никаких ошибок, так что, надеюсь, это поможет другим людям.

person seedg    schedule 12.06.2012