1

我按照本教程介绍了如何将 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 的控制台中跟踪它时,它运行正常。它不会无缘无故地显示编辑表单。

4

2 回答 2

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);
                            }
                        }
                }]
        }
});
于 2013-06-24T08:31:41.177 回答
0

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

于 2013-01-18T16:36:21.730 回答