2012-04-02 49 views
1

我有一個樹形面板,我想將一個動作關聯到此樹的一片葉子上。我設法關聯一個樹元素的每次點擊,但我不僅僅是樹葉。我如何知道選定的節點是否是樹中的葉子? (ExtJS 4)

這裏我的代碼,我用很簡單的功能,試了一下:(菜單擴展tree.Panel視圖)

Ext.define('WSR.controller.MenuControl', { 

    extend: 'Ext.app.Controller', 

    views: [ 
     'Menu', 
     'Browser' 
    ], 

    stores: [ 'UserStore' ], 

    init: function() { 

     this.control({ 
      'menu': { 
       itemclick: this.onItemClicked 
      } 
     }); 
    }, 

    onItemClicked: function() { 
     console.log('ItemClicked'); 
    } 
}); 

有沒有人來幫助我嗎?

回答

2

嘗試:

Ext.define('WSR.controller.MenuControl', { 

extend: 'Ext.app.Controller', 

views: [ 
    'Menu', 
    'Browser' 
], 

refs:[ 
    { 
     selector: 'Menu', //Suggest u to use a selector that is more "tightened" in case you have more trees of this type 
     ref: 'mynicetree' 
    } 
], 

stores: [ 'UserStore' ], 

init: function() { 

    this.control({ 
     'menu': { 
      //I suggest u use selectionchange instead, itemclick won't work if the use navigate the tree nodes using keyboard, whereas selectionchange fit both 
      selectionchange: this.loadStuff 
     } 
    }); 
}, 

loadStuff: function() { 

    //Assuming you can only select one node at a time (typical use case) 
    var myTreePanel = this.getMynicetree(); 
    var nodes = myTreePanel.getSelectionModel().selection(); 
    if(!Ext.isEmpty(nodes)) 
    { 
     var selNode = nodes[0]; 
     if(selNode.get("leaf")) //Assuming your NodeInterface "leaf" property was assigned 
     { 
      //Its a leaf 
     } 

     //OR 
     if(selNode.isLeaf()) 
     { 
      //Its a leaf 
     } 

    } 
} 

});

HTH!

+0

有用就不得不修改兩個細節:'selector:'menu','(我定義了沒有cap字母的別名)和'var nodes = myTreePanel.getSelectionModel()。getSelection();'。但兩種測試都能正常工作!謝謝 ! – Malex 2012-04-03 08:44:16

0

,如果你有節點ID,那麼你可以嘗試類似的代碼如下:

taxonomyTreeLoader.on("load", function(){ 
      if(isQueryExecutable && singleParamDynamicQuery &&docTypeCodeDynamciQuery.length>0){ 
       var currentNode=taxonomyTree.getNodeById(docTypeNodeId); 
       if(currentNode.isLeaf()){ 
        taxonomyTree.getSelectionModel().select(currentNode); 
        taxonomyTree.fireEvent("click", currentNode); 
       } 
      } 
     });  
0

問題是,從去年開始,但是這種解決方案可能是有人

init:function(){ 
    this.control({ 
     //Component listeners 
     'menu': { 
      itemclick: this.onItemClicked 
     } 
    }); 

    this.application.on({ 
     //Event handlers 
    }); 

}, 

onItemClicked: function(tree, record) { 
    if(record.isLeaf()){ 
     alert('related: '+"\n"+record.getId()); 
     console.log(record.getId()); 
    } 
} 
相關問題