2012-09-07 29 views
0

在我看來,我有一個樹型面板及其相應的控制器。現在發生的事情是,我有兩個控制器,一個用於itemdblclick,另一個用於itemmove。 itemdblclick工作正常,但是當我爲itemmove添加控制器時,itemmove正在工作,但另一方面,itemdbclick不起作用。如果我刪除itemmove控制器,itemdblclick正在工作。希望不會讓人困惑:)簡而言之,兩位控制者分開工作,但不在一起。EXTJS中的Itemclick和itemmS MVC

  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'); 
      } 
     }); 
    } 
} 

回答

1

分別添加它們會導致第一個監聽對象被覆蓋的情況發生。

修復:

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

你應該檢查店是一樣的。意思檢查ID,因爲我認爲控制器初始化一個商店和另一個面板。所以檢查this.getHierarchyTreeStore().id是否與來自treepanel的相同。您可以從按鈕類似button.up().down('treepanel').getStore().id導航到它。如果他們不同,那麼你應該使用第二種方法來獲得商店。

+0

一切又恢復了:)謝謝你這麼多:)和第二個問題 – rosebrit3

0

試着做下面的代碼,如使用上下不會指向正確的觀點,因爲樹和形式是完全不同的看法

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

現在,即使商店重新加載上午歌廳錯誤

TypeError: view.down("treepanel") is null 

view.down('treepanel').getStore.load(); 
+1

轉小部件的任何想法是actualy創建一個新的組件,所以當你嘗試尋找不使用TreePanel中。對於完全不同的視圖,你可以使用Ext.ComponentQuery.query('hierarchy')或者Ext.getCmp('hierarchy') – nscrob

+0

@ rosebrit3請不要像論壇一樣使用stackoverflow。如果您的問題得到解答,並且您有另一項檢查,或者您必須更新您的初始文章。並且不要將正確答案標記爲答案;-) – sra