我的视图中有一个树状面板及其相应的控制器。发生的事情是我有两个控制器,一个用于itemdblclick,另一个用于itemmove。 itemdblclick工作正常,但是当我为itemmove添加控制器时,itemmove正在工作,但另一方面,itemdbclick无效。如果我删除了itemmove控制器,则itemdblclick正在运行。希望不要混淆:)简单来说,两个控制器分开工作但不在一起。
有谁能告诉我这里我做错了什么。
此外,在控制器中的函数editRegion中,我尝试使用getStore.load()方法重新加载树,但是即使能够看到正在调用的存储中,也未加载树。萤火
编辑:
在双击树节点时打开表单,在关闭表单时,我希望重新加载树面板。这就是我想在editregion函数中发生的事情
查看
{
xtype : 'treepanel',
title : '',
id : 'hierarchyTree',
border : false,
alias : 'widget.hierarchyTree',
height : 1000,
viewConfig : {
enableDD : true,
plugins : {
ptype : 'treeviewdragdrop'
}
},
collapsible : false,
useArrows : true,
rootVisible : false,
store : Ext.create('App.store.HierarchyTree'),
displayField : 'Title',
multiSelect : false,
singleExpand : false,
}
控制器
refs : [{
ref : 'myHierarchyTree',
selector : '#hierarchyTree'
}
init : function() {
this.getHierarchyTreeStore().load();
'#hierarchyTree' : {
itemdblclick : this.itemdblclick
},
'#hierarchyTree' : {
itemmove : this.itemmove
}
itemdblclick : function(view, record, level) {
if (record.get('LevelID') == 1) {
this.erWin = Ext.create('App.view.EditRegions');
var f = this.getEditregionform().getForm();
f.loadRecord(record);
this.erWin.showWin();
}
else if (record.get('LevelID') == 2) {
this.eaWin = Ext.create('App.view.EditAreas');
var f = this.getEditareaform().getForm();
f.loadRecord(record);
this.eaWin.showWin();
}
itemmove : function(v, oldParent, newParent, index, eOpts) {
var nodeID = v.data.id;
var oldParent = oldParent.data.id;
var newParent = newParent.data.id;
var index = index;
var level = v.data.LevelID;
Ext.Ajax.request({
url : 'data/Locations.aspx',
params : {
mode : 'MOVENODE',
currentNode : nodeID,
oldParentNode : oldParent,
newParentNode : newParent
},
success : function() {
alert(LANG.SUC);
Ext.getStore('HierarchyTree').load();
},
failure : function() {
}
});
editRegion : function(button, record) {
var fp = button.up('form');
if (fp.getForm().isValid()) {
fp.getForm().submit({
url : 'data/Locations.aspx',
params : {
mode : 'EDITREGION',
userID : ME.UserID,
RegionID : ME.RegionID
},
success : function(response) {
alert(LANG.SUC);
this.getHierarchyTreeStore().load();
},
failure : function(response) {
alert('Try again');
}
});
}
}
答案 0 :(得分:1)
单独添加它们将导致第一个侦听器对象被覆盖。
修正:
'#hierarchyTree' : {
itemdblclick : this.itemdblclick,
itemmove : this.itemmove
},
您应该检查商店是否相同。意思是检查id,因为我认为控制器初始化一个商店而面板另一个。所以检查this.getHierarchyTreeStore().id
是否与treepanel中的那个相同。你可以从button.up().down('treepanel').getStore().id
之类的按钮导航到它。如果它们不同,那么你应该使用第二种方法来获得商店。
答案 1 :(得分:0)
尝试执行以下代码,因为使用up和down不会引用正确的视图,因为树和表单是完全不同的视图
var view = Ext.widget('hierarchy');
view.down('treepanel').getStore.load();
现在,即使商店正在重新加载,也会出现错误
TypeError: view.down("treepanel") is null
view.down('treepanel').getStore.load();