我试图响应控制器内部的视图触发事件。该事件确实触发,但控制器操作从未被调用。未被控制器捕获的事件
查看:
Ext.define("MyApp.view.Dashboard", {
extend: 'Ext.Container',
xtype: 'my_dashboard',
config: {
items: [
{
xtype: 'dataview',
listeners: {
itemtap: function(sender, index, elem, record) {
// fires with param, e.g. 'inbox'
this.fireEvent(record.get('name'));
}
}
}
...
控制器:
Ext.define('MyApp.controller.Dashboard', {
extend: 'Ext.app.Controller',
config: {
control: {
'my_dashboard': {
'inbox': 'showInbox',
...
}
}
},
showInbox: function() {
/* never gets called */
},
...
我在做什么错?
UPDATE:
我找到了解决办法,但感觉非常哈克。我在数据视图和,my_dashboard
视图中添加了bubbleEvents
配置,并且事件开始进入控制器。
由于仪表板可以具有可变数量的项目,因此我不知道需要冒出哪些事件。当然,我可以冒泡所有可能的仪表板事件,但这似乎是一个巨大的混乱。
如果视图触发应用程序事件,例如, MyApp.app.fireEvent()
?
我不知道,但它可能是一个范围的问题。也许事件是在dataview上触发的,而不是在my_dashboard容器上触发的。试试这个:''my_dashboard dataview':{'inbox':'showInbox',...}'。 –
@TDeBailleul:是的,这正是发生了什么,我目前的解决方法是从'my_dashboard'级别(使用'this.parent.fireEvent()')触发事件。我想在控制器中使用更具体的选择器,但我不希望控制器必须知道视图的内部结构。 – alekop
所以问题解决了?你不希望你的控制器知道视图的内部结构的任何特定原因? –