我有一个带左侧导航菜单的主应用程序。我的Main.js控制器处理添加了Tab的treepanelselect
事件:
onTreepanelSelect: function (selModel, record, index, options) {
var mainPanel = Ext.ComponentQuery.query('mainpanel')[0];
var newTab = mainPanel.items.findBy(
function (tab) {
return tab.title === record.raw.text;
});
if (!newTab) {
newTab = mainPanel.add({
xtype: record.raw.class_name, // this is my View widget name
closable: true,
iconCls: "key",
title: record.raw.text
});
}
mainPanel.setActiveTab(newTab);
},
两个导航菜单项是:
controller.Employee
)controller.Catalog
) controller.Catalog
是我管理目录的控制器,与controller.Employee
(2个不同的模块)100%分开
这是我的controller.Catalog
:
refs: [
{
ref: 'grid',
selector: '#gridCatalog'
}],
init: function (application) {
this.control({
'grid': {
selectionchange: this.gridSelectionChange
}
});
},
gridSelectionChange: function (model, records) {
console.log("Catalog Row Selected");
},
所以view.Catalogs有一个gridCatalog
和selectionchange
我进入我的控制台:选择了目录行。
另一方面,这是我的controller.Employee
:
refs: [
{
ref: 'grid',
selector: '#gridEmployee'
}
],
init: function (application) {
this.control(
{
'grid': {
itemdblclick: this.gridDoubleClick
}
});
},
gridDoubleClick: function (dv, record, item, index, e) {
// nothing here for the moment.
}
好的,这是魔鬼来到现场的地方。
当我运行我的应用程序时,然后单击我的导航项目" 员工"并且我的选项卡是使用其中的视图创建的。直到这里我们还不错。
但....当我点击我gridEmployee
的一行时猜猜是什么?我进入我的控制台:选择目录行。
因此,由于某种原因,controller.Catalog
正在倾听我的gridEmployee
...我的selectionchange
中没有controller.Employee
个事件处理程序。这些文件甚至位于我的" app"中的单独模块文件夹中。文件夹中。
关于我做错了什么的任何线索?这让我头晕目眩:(
答案 0 :(得分:0)
两个控制器都在监听来自任何网格的事件,因为它们都在init`中使用grid
组件查询。改进您的查询,使其不那么通用。
init: function (application) {
this.control(
{
// Don't listen to any grid, just #gridEmployee
'#gridEmployee': {
itemdblclick: this.gridDoubleClick
}
});
},
第二档
init: function (application) {
this.control({
// Don't listen to any grid, just #gridCatalog
'#gridCatalog': {
selectionchange: this.gridSelectionChange
}
});
},
您似乎一直认为,您用于参考的内容会影响传递到this.control
的组件查询,但它没有看到http://docs-origin.sencha.com/extjs/4.2.2/#!/api/Ext.app.Controller-method-control