4

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

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'
        }
    }
},
...

第一次将此视图放置在导航视图上时,按钮点击起作用。当我点击后退按钮并按下另一个视图时,该按钮什么也不做。

我想按照现在的逻辑来解决这个问题。在创建视图然后推送它时,我宁愿自己不添加事件监听器。

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

4

3 回答 3

5

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

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

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

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

    control: {
        "button[action=acceptEvent]": {
            tap: 'onAcceptButtonTap'
        }
    }
于 2012-04-19T11:36:14.180 回答
2

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

在将 false 应用于此 autoDestroy 属性后,它工作得很好。
希望它也对你有用。

于 2012-04-27T05:55:07.290 回答
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'
    }
}
于 2012-10-16T12:19:29.590 回答