我正在寻找一种滚动到树中特定元素的方法。 知道怎么做吗?
答案 0 :(得分:1)
在节点点击事件处理程序中尝试此操作:
node.getUI().getIconEl().scrollIntoView(node.getOwnerTree(), false);
答案 1 :(得分:1)
我只需要致电n.select();
,但我必须在正确的地方执行此操作:)
我制作了一个TreeLoader,并将其链接到我的树上。在其事件load
(这意味着'当所有内容被下载'时,我会称之为afterload
...),我读取所有节点并根据他们的id
我的行为因此:
var LasTreeLoader = new Ext.tree.TreeLoader({
dataUrl: 'json/las.php',
listeners: {
load: function(loader,n,response) {
console.log('datas downloaded');
n.eachChild(
function(n) {
if ((n.id=='las/2007') ||
(n.id=='las/2007/08') ||
(n.id=='las/2007/08/29')) {
n.expand(false,false);
}
if (n.id=='las/2007/08/29/21_14_04') {
n.select();
}
});
}
}
});
答案 2 :(得分:1)
DOM scrollIntoView
并没有真正按预期工作,因为它总是顶部或底部对齐元素。然而,ExtJS似乎正好需要:
Ext.get(el|elId).scrollIntoView(containerId|containerEl);
例如,为了确保Ext.view.View
(数据视图)实例中当前选定的项目可见,我做了:
Ext.define('MyView', {
extend: 'Ext.view.View',
...
listeners: {
'selectionchange': function(_, selections) {
if (selections.length === 1) {
var node = this.getNode(selections[0]);
Ext.fly(node).scrollIntoView(this.el);
}
}
},
...
}
答案 3 :(得分:0)
它与extJs没有直接关系,但您可以在树中获取所需的DOM元素,并使用scrollTo
来获取它。
答案 4 :(得分:0)
var path = tree.getSelectionModel().getSelectedNode().getPath('id');
//reload data,
tree.getLoader().load(tree.getRootNode(),function(treeNode){
//expand path and select node
tree.expandPath(path,'id',function(bSucess,oLastNode){
tree.getSelectionModel().select(oLastNode);
});
},this);