在ExtJS树上展开节点的默认操作是双击。
在版本4之前,TreeNode配置中有singleClickExpand
属性。
如何在ExtJS第4版树上应用singleClickExpand
行为?
在没有设置事件侦听器的情况下是否存在此行为的配置属性??
谢谢。
答案 0 :(得分:9)
我花了一些时间寻找同样的事情。我觉得我可以用...明确回答你的问题 没有它没有配置选项。 我不得不设置一个点击处理程序。无论如何我还需要一个实现叶子点击的功能:
var tree = Ext.create('Ext.tree.Panel', {
store: store,
rootVisible: false,
lines: false,
useArrows: true,
listeners: {
itemclick: function(view, node) {
if(node.isLeaf()) {
// some functionality to open the leaf(document) in a tabpanel
} else if(node.isExpanded()) {
node.collapse();
} else {
node.expand();
}
}
}
});
答案 1 :(得分:4)
实际上你使用树视图的扩展功能。
只需在你的treepanel上实现itemclick功能:
listeners: {
itemclick: function (treeview, record, item, index, e, eOpts) {
treeview.expand(record);
}
}
答案 2 :(得分:2)
如果您正在使用键盘导航,您可能需要使用selectionChange事件以覆盖所有场景,但无论如何,这是我在我的案例中使用的方法来实现单击事件。
在树中定义一个新事件,例如假设您已经定义了一个继承自treepanel的类,然后在“initComponent”中创建事件:
Ext.define('MY.view.CheckList',{ extend:'Ext.tree.Panel', 别名:'widget.checklist',
store: 'CheckPoints',
useArrows: true,
initComponent: function () {
this.callParent(arguments);
this.on("selectionchange", this.onSelectionChange);
this.addEvents({
singleClick: true
});
},
onSelectionChange: function(model, nodes){
[....]
// fire statusUpdated event
this.fireEvent("singleClick", this, model, nodes);
}
});
然后你需要听你创建的事件,例如:
var mytree = Ext.create("MY.view.CheckList");
mytree.on(“singleClick”,函数(树,模型,节点){
console.log(">>>>>>>>>>>>>>>>>>>>> EVENT TRIGGERED <<<<<<<<<<<<<<<<<<<<<<<<");
console.log( tree, model, nodes);
var currSelPath = nodes[0].getPath();
//This will expand the node at the path you just clicked
tree.expandPath(currSelPath);
});
2件事:
这不是最完美的解决方案,我敢肯定,但在我的情况下工作得很好。
HTH!