如何知道所选节点是否是树中的一片叶子?(ExtJS 4)

How do I know if the selected node is a leaf in a tree ? (ExtJS 4)

本文关键字:一片 叶子 ExtJS 何知道 节点 是否是      更新时间:2023-09-26

我有一个树面板,我想将一个操作与单击该树的叶子相关联。我设法将一个元素与每点击一次树元素相关联,但我不仅与树叶相关联。

在这里我的代码,我尝试了它与非常简单的功能:(菜单是一个视图扩展树.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');
    }
});

有人帮我吗?

尝试:

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
        }
    }
}

});

啊!

如果您有节点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);
                } 
            }   
        });    

这个问题来自去年,但这个解决方案可能对有帮助

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