Itemclick and itemmove in EXTJS MVC



我的视图中有一个树面板及其相应的控制器。现在的情况是,我有两个控制器,一个用于itemdblclick,另一个用于itemmove。itemdblclick可以正常工作,但当我为itemmove添加控制器时,itemmove可以工作,但另一方面,itemdblick不工作。如果我移除itemmove控制器,itemdblclick就可以工作了。希望不会混淆:)简单地说,这两个控制器是分开工作的,但不是一起工作的。

  1. 有人能告诉我我在这里做错了什么吗。

  2. 此外,在控制器中的函数editRegion中,我试图使用getStore.load()方法重新加载树,但树没有加载,即使我能够看到firebug 中调用的存储

编辑:

双击树节点打开窗体,关闭窗体时,我希望重新加载树面板。这就是我希望在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');
            }
        });
    }
}

单独添加它们将导致覆盖第一个侦听器对象。

修复:

       '#hierarchyTree' : {
            itemdblclick : this.itemdblclick,
            itemmove : this.itemmove
        },

你应该检查一下商店是否是一样的。意思是检查id,因为我认为控制程序初始化一个存储区,面板初始化另一个。所以检查CCD_ 1和treepanel中的值是否相等。您可以从类似button.up().down('treepanel').getStore().id的按钮导航到它。如果它们不同,那么您应该使用第二种方法来获取存储。

尝试执行以下代码,因为使用向上和向下不会引用正确的视图,因为树和表单是完全不同的视图

    var view = Ext.widget('hierarchy');
view.down('treepanel').getStore.load();

现在,即使商店正在重新加载,我也收到了一个错误

TypeError: view.down("treepanel") is null
view.down('treepanel').getStore.load();

最新更新