当列表中的项目被选中时,我执行以下代码行。
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。
此问题所在的任何想法以及如何解决?
答案 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'
}
}