从编辑表单返回时,Sencha Touch 2列表itemtap无法正常工作

时间:2013-01-17 20:47:19

标签: events navigation sencha-touch-2 listitem sencha-architect

我按照本教程学习了如何使用Sencha Touch 2和Architect以及ASP.NET MVC 4 WebApi后端: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的控制台中跟踪它时,它运行正常。它没有明显的原因显示编辑表格。

2 个答案:

答案 0 :(得分:2)

所有那些想把名单放在sencha中并且听众没有在列表中工作的人不要忘记查看你正在扩展的内容,看看下面的代码并安静地休息,因为我花了5天时间来解决这个问题。我无处可寻找代码中丢失的内容,,,所以缺少的片段是“extend:'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);
                            }
                        }
                }]
        }
});

答案 1 :(得分:0)

原来问题是编辑表单本身。我在表单中添加了记录“id”字段,它似乎是导致错误的原因。因此,如果您按原样关注视频,它就会起作用。