2

调试一些 Sencha Touch 2 代码,我把它归结为这个。为什么这不起作用?更重要的是,为什么不呢?明明view、listOne、listTwo都在范围内,但是点击listOne item,然后返回,再点击listOne item第二次会报错。导航视图返回时是否会删除引用?

var view = Ext.create('Ext.NavigationView', {
    xtype:'myview',
    fullscreen: true
});

var listTwo = Ext.create('Ext.List', {
    store: {
        fields: ['name'],
        data: [
            {name: 'Doeth'},
            {name: 'Smith'},
            {name: 'Johnson'},
            {name: 'Stevens'}
        ]
    },
    itemTpl: '{name}'
});


var listOne = Ext.create('Ext.List', {
    store: {
        fields: ['name'],
        data: [
            {name: 'Cowper'},
            {name: 'Everett'},
            {name: 'University'},
            {name: 'Forest'}
        ]
    },
    itemTpl: '{name}',
    listeners: {
       itemtap: function (me, index, target, record, e, eOpts ){
           view.push(listTwo);
        }
    }
});

Ext.Viewport.add(view);
view.push(listOne);
4

1 回答 1

4

查看 Sencha 的源代码,我确认这是预期的行为: Ext.NavigationView按下后退按钮调用其pop()方法。反过来,这会remove()以活动视图作为参数调用 NavigationView。remove()继承自Ext.Container,并且可以选择销毁对象。默认情况下autoDestroyconfig 是 true,这解释了发生了什么。

在导航视图上设置autoDestroy为 false 以修复错误。

煎茶小提琴

导航视图

容器

于 2013-07-06T11:58:57.730 回答