2

我有一个列表项上的处理程序公开,当用户单击一个项目时,我正在推送带有下一个代码的表单视图:

list.up('navigationview').push({
xtype: 'xEditAddFormPanel',
title: 'Edit task',
data: record.getData()
});

在第一次单击时它正在工作,并且导航显示xEditAddFormPanel..

但是,在单击后退按钮(并返回列表屏幕)然后再次按下列表项(再次触发上述代码)后 - 现在什么也没有发生。

如何再次显示表单屏幕?

4

2 回答 2

1

我遇到了同样的问题,原因是您第二次将视图推送到导航器时,侦听器丢失了。为什么?因为每次您将视图推送到导航器时,旧视图都会被破坏,所有听众都将被带入坟墓......

为了解决这个问题,每当我创建一个我想要推送的新视图时,我都会手动绑定事件:

onXButtonTap: function () {
    var view = Ext.create('MyApp.view.XEntryView');
    //Bind the events you need manually every time you push.
    view.on('myEvent', this.onSubmitNewX);
    this.getXMainView().push(view);
}
于 2013-07-08T23:37:51.887 回答
0

通常在 Sencha 中,您必须手动销毁组件。您可能需要执行以下操作:

var formPanel = Ext.create('YourApp.view.EditAddFormPanel', {
    title: 'Edit task',
    data: record.getData()
});

formPanel.onAfter('erased', function(){
    this.destroy();
}, this);

list.up('navigationview').push(formPanel);
于 2013-01-05T03:09:47.980 回答