当第二次添加视图时,按钮点击不响应

时间:2012-04-18 11:43:53

标签: sencha-touch-2

当列表中的项目被选中时,我执行以下代码行。

this.details = Ext.create('EventManager.view.EventInfoView');
this.getNavigationView().push(this.details);

所以我创建了一个新视图,并将其推送到导航视图。 在我的控制器中,我听取了一个在新创建的视图中的acceptEventButton的点击。

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

    control: {
        "acceptEventButton": {
            tap: 'onAcceptButtonTap'
        }
    }
},
...

第一次将此视图放置在导航视图上时,按钮点按即可生效。 当我按下后退按钮并按下另一个视图时按钮什么都不做。

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

此问题所在的任何想法以及如何解决?

3 个答案:

答案 0 :(得分:5)

发布了新版的sencha架构师,允许添加未列出的属性。

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

{
    xtype: 'button',
    id: 'acceptEventButton',
    ui: 'confirm',
    text: 'Accept',
    action: 'acceptEvent'
}

在我的控制器中我有以下几行代码

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

答案 1 :(得分:2)

我之前遇到过同样的问题,它是通过在我的navigationView的配置中设置
autoDestroy:false,
来解决的。

在对此autoDestroy属性应用false后,它的工作非常好。
希望它也能为你工作。

答案 2 :(得分:0)

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

control: {
    "button[id='acceptEventButton']": {
        tap: 'onAcceptButtonTap'
    }
}

作为额外信息:您还可以在这些查询中使用xtype 例如,如果您有如下导航视图:

Ext.define('app.view.Pages', {
    extend: 'Ext.NavigationView',
    xtype: 'pages',
    ...
}

然后像这样推送一个列表:

Ext.define('app.view.ItemList', {
    extend: 'Ext.dataview.List',
    xtype: 'itemlist',
    ...
}

然后您可以按如下方式编写查询:

control: {
    "pages itemlist": {
        itemtap: 'onItemTap'
    }
}