Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ext js树:发生afterrender事件时如何动态加载节点?_Javascript_Extjs_Tree_Extjs4 - Fatal编程技术网

Javascript ext js树:发生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: 上面的代码现在正在

主要任务是在加载树面板后,使用ajax动态打开一个分支。用户不应进行任何单击。它应该在加载页面后自行展开

我尝试使用afterrender事件递归加载节点。但我无法在那里获取当前树对象。这一步是空的

这就像是在打电话。此代码也不适用于afterrender事件:

  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或通过存储加载节点。