Элемент списка Sencha Touch 2 не работает при возврате из формы редактирования

Я следовал этому руководству о том, как использовать Sencha Touch 2 с Architect и серверной частью WebApi ASP.NET MVC 4: https://vimeo.com/45207356# Все работает, но простая вещь. Как только я возвращаюсь из подробной формы, список событий itemtap больше не работает. Независимо от того, сохраню ли я, удалю или просто нажму кнопку «Назад», как только я вернусь в основной вид (тот, где есть список), я больше не смогу вернуться к форме редактирования. Вот код основного представления:

Ext.define('ClientTestApi.view.Main', {
extend: 'Ext.navigation.View',

config: {
    id: 'Main',
    items: [
        {
            xtype: 'list',
            title: 'Songs',
            id: 'ListePieces',
            itemTpl: [
                '<div>{Title}, {Artist}, {Album}, {Genre}, {Year}</div>'
            ],
            loadingText: 'Chargement...',
            store: 'PieceStore'
        }
    ]
}

});

И контроллер:

Ext.define('ClientTestApi.controller.PieceSimple', {
extend: 'Ext.app.Controller',

config: {
    refs: {
        mainView: '#Main',
        formPiece: '#FormPiece',
        listePieces: '#ListePieces'
    },

    control: {
        "#ListePieces": {
            itemtap: 'onListItemTap'
        }
    }
},

onListItemTap: function(dataview, index, target, record, e, options) {
    var form = Ext.create('ClientMusiqueApi.view.FormPiece',
    {
        title: record.data.Titre
    });

    this.getMainView().push(form);
    form.setRecord(record);
}

Я опустил код сохранения и удаления, так как поведение происходит также, когда вы просто нажимаете кнопку «Назад», ничего не делая.

Поэтому, когда я загружаю приложение, все работает. Я нажимаю на элемент и попадаю в форму редактирования ("FormPiece"). Когда я возвращаюсь (например, с помощью кнопки «Назад» на панели навигации), список отображается в порядке, элементы выбираются, когда я нажимаю на них, но на этот раз форма редактирования не открывается. Кто-нибудь знает, почему?

ОБНОВЛЕНИЕ: после простого теста (я добавил предупреждение в событие onListItemTap) я увидел, что событие запускается даже после того, как я вернусь. Проблема, похоже, связана с методом "push()". Но когда я отслеживаю его в консоли Chrome, он работает нормально. Форма редактирования не отображается без видимой причины.


person Patrice Cote    schedule 17.01.2013    source источник


Ответы (2)


Все те, кто хочет поместить список в сенчу и там слушатели не работают со списком, тогда не забудьте проверить, что вы расширяете, посмотрите следующий код и покойся с миром, потому что мне потребовалось 5 дней, чтобы решить эту проблему. Нигде я не мог найти, чего не хватает в коде, поэтому отсутствующий фрагмент был «расширить: 'Ext.navigation.View':

Ext.define('iPhoneTestApp.view.Inbox', {
    extend: 'Ext.navigation.View',
    xtype: 'inbox',
    inline: true,
    requires: [ 'Ext.*','Ext.dataview.List' ],
    config: {
            items : [{
                        xtype: 'list',
                        inline: true,
                        id:'list',
                        itemTpl: '<div class="contact">{title} </div>',
                        data: [
                                { title: 'Item 1' },
                                { title: 'Item 2' },
                                { title: 'Item 3' },
                                { title: 'Item 4' }
                            ],
                        fullscreen: true,
                        listeners: {
                            itemtap: function(el){
                                Ext.Msg.alert('Warning', '3', Ext.emptyFn);
                            }
                        }
                }]
        }
});
person Aviral Sharad Srivastava    schedule 24.06.2013

Оказалось, что проблема была в самой форме редактирования. Я добавил поле записи «id» в форму, и, похоже, это было причиной ошибки. Так что, если вы просто будете следовать видео как есть, оно сработает.

person Patrice Cote    schedule 18.01.2013