Sencha touch 2 第二次添加视图时,点击按钮不作出反应

Sencha touch 2 第二次添加视图时,点击按钮不作出反应,sencha-touch-2,Sencha Touch 2,当从列表中选择一个项目时,我执行以下代码行 this.details = Ext.create('EventManager.view.EventInfoView'); this.getNavigationView().push(this.details); 因此,我创建了一个新视图,并将其推送到navigationview上。 在我的控制器中,我监听新创建的视图中acceptEventButton的点击 Ext.define('EventManager.controller.eventCont

当从列表中选择一个项目时,我执行以下代码行

this.details = Ext.create('EventManager.view.EventInfoView');
this.getNavigationView().push(this.details);
因此,我创建了一个新视图,并将其推送到navigationview上。 在我的控制器中,我监听新创建的视图中acceptEventButton的点击

Ext.define('EventManager.controller.eventController', {
extend: 'Ext.app.Controller',
config: {
    refs: {
        acceptEventButton: '#acceptEventButton'
    },

    control: {
        "acceptEventButton": {
            tap: 'onAcceptButtonTap'
        }
    }
},
...
第一次将此视图放置在navigationview上时,点击按钮即可工作。 当我按下后退按钮并按下另一个视图时,该按钮不起任何作用

我想按照现在的逻辑来解决这个问题。我不希望在创建视图时自己添加eventlisteners,然后推送它


这个问题存在于何处以及如何解决?发布了新版本的sencha architect,允许添加未列出的属性

我解决了这个问题,在我的按钮上添加了一个动作字段,并在我的控制器中对该动作做出反应

{
    xtype: 'button',
    id: 'acceptEventButton',
    ui: 'confirm',
    text: 'Accept',
    action: 'acceptEvent'
}
在我的控制器中,我有以下代码行

    control: {
        "button[action=acceptEvent]": {
            tap: 'onAcceptButtonTap'
        }
    }

我之前也遇到过同样的问题,通过在navigationView的配置中设置
autoDestroy:false,
解决了这个问题


将false应用于此autoDestroy属性后,它可以很好地工作。
希望它也适用于您。

您应该按如下方式更改查询:

control: {
    "button[id='acceptEventButton']": {
        tap: 'onAcceptButtonTap'
    }
}
Ext.define('app.view.Pages', {
    extend: 'Ext.NavigationView',
    xtype: 'pages',
    ...
}
control: {
    "pages itemlist": {
        itemtap: 'onItemTap'
    }
}
作为额外信息:您也可以在这些查询中使用xtype。
例如,如果您有如下导航视图:

control: {
    "button[id='acceptEventButton']": {
        tap: 'onAcceptButtonTap'
    }
}
Ext.define('app.view.Pages', {
    extend: 'Ext.NavigationView',
    xtype: 'pages',
    ...
}
control: {
    "pages itemlist": {
        itemtap: 'onItemTap'
    }
}
然后你像这样推送一个列表:

Ext.define('app.view.ItemList', {
    extend: 'Ext.dataview.List',
    xtype: 'itemlist',
    ...
}
然后,您可以按如下方式编写查询:

control: {
    "button[id='acceptEventButton']": {
        tap: 'onAcceptButtonTap'
    }
}
Ext.define('app.view.Pages', {
    extend: 'Ext.NavigationView',
    xtype: 'pages',
    ...
}
control: {
    "pages itemlist": {
        itemtap: 'onItemTap'
    }
}

彼此彼此。我对这个问题感到非常沮丧,
add()
方法也得到了同样的结果。我认为这是一个bug。你确定当删除并再次添加该组件时,这会起作用吗?你测试过了吗?谢谢你的回复,但这不会给我的按钮有id带来问题吗?按照您的建议,我的视图不会被破坏,只会创建并添加另一个版本。我想这会减慢应用程序的速度。欢迎但我认为在navigationView中,视图是通过stak处理的,通过设置autoDestry:false,它将从堆栈顶部删除当前视图对象。希望你能理解我的意思。:)