Javascript ext js树:发生afterrender事件时如何动态加载节点?
主要任务是在加载树面板后,使用ajax动态打开一个分支。用户不应进行任何单击。它应该在加载页面后自行展开 我尝试使用afterrender事件递归加载节点。但我无法在那里获取当前树对象。这一步是空的 这就像是在打电话。此代码也不适用于afterrender事件:Javascript ext js树:发生afterrender事件时如何动态加载节点?,javascript,extjs,tree,extjs4,Javascript,Extjs,Tree,Extjs4,主要任务是在加载树面板后,使用ajax动态打开一个分支。用户不应进行任何单击。它应该在加载页面后自行展开 我尝试使用afterrender事件递归加载节点。但我无法在那里获取当前树对象。这一步是空的 这就像是在打电话。此代码也不适用于afterrender事件: tree.expandAll(function() { tree.getEl().unmask(); toolbar.enable(); }); 那么,如何使用ajax加载节点呢 更新1: 上面的代码现在正在
tree.expandAll(function() {
tree.getEl().unmask();
toolbar.enable();
});
那么,如何使用ajax加载节点呢
更新1:
上面的代码现在正在运行。我只是在树定义之后添加这段代码。
但问题仍然存在。如何使用ajax加载一个节点?您不能像大多数示例一样使用树存储吗?如果这样做,树将自动从存储请求节点,存储将从服务器加载内容。给定您的服务器代码可以发回给定特定节点的分支 如果您在Chrome中打开开发者工具,转到网络选项卡,然后展开树中的一个节点,您将看到树存储区将通过从get-nodes.php请求数据自动加载该节点的子节点(给定展开的节点id) 您可以通过简单调用来检查节点。在节点上展开 如果这不起作用,您可以加载模型,然后将其添加到树中并展开父级,如下所示:
MyApp.model.MyTreeModel.load(someId, {
success: function (record, operation) {
// If the third param is true the search will be recursive from the supplied node
var node = tree.getRootNode().findChild('id', someParentId, true);
node.addChild(record);
node.expand();
},
scope: this
});
你的问题有点宽泛,所以我希望这对你有所帮助
您可能想看一看关于从根类别展开节点的。你就在这里。但是,在页面加载后,在没有任何用户操作的情况下,如何通过节点ID以友好方式打开一些分支子/子/子/节点呢。findChild方法将查看整个树中的所有节点,以找到将成为新节点父节点的节点。新节点必须具有parentId,但这是给定的。因此,将新节点添加到该父节点,然后展开该父节点。这就是代码的作用。只需从存储中加载一个模型,当它成功加载后,parentNode上面代码中的成功回调将接收新的子节点并展开。我不知道如何加载节点,但通常会从服务器API或通过存储加载节点。