调试一些Sencha Touch 2代码,我把它归结为此。为什么这不起作用?更重要的是,为什么不应该呢?清楚地查看,listOne和listTwo都在范围内,但是点击listOne项目,然后返回,然后再次点击listOne项目会导致错误。导航视图在返回时是否会删除引用?
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);
答案 0 :(得分:4)
看看Sencha的源代码,我确认这是预期的行为:
按{strong>返回按钮后,Ext.NavigationView
会调用其pop()
方法。
反过来,这将使用活动视图作为参数调用NavigationView上的remove()
。 remove()
继承自Ext.Container
,可以选择销毁该对象。默认情况下autoDestroy
配置为true,这解释了发生了什么。
在导航视图上将autoDestroy
设置为false以修复错误。