主要任务是在加载树面板后使用ajax打开一个分支。用户不应该进行任何点击。它应该在页面加载后自行扩展。
我尝试使用afterrender事件以递归方式加载节点。但我无法获得当前的树对象。在这一步它是空的。
就像expandAll调用一样。此代码也不适用于Afterrender事件:
tree.expandAll(function() {
tree.getEl().unmask();
toolbar.enable();
});
那么,我如何使用ajax加载节点?
更新1: 上面的代码现在正在运行。我只是在“树”定义后添加此代码。 但问题仍然存在。如何使用ajax加载一个节点?
答案 0 :(得分:0)
你不能像大多数例子一样使用树店吗?如果这样做,树将自动从商店请求节点,商店将从服务器加载东西。鉴于您的服务器代码可以发送给定特定节点的分支。
See the Sencha Kitchen Sink demos of a tree working against the server with a TreeStore.
如果您在Chrome中打开开发人员工具,请转到网络标签,然后展开树中的节点,您将看到TreeStore将通过从“get-nodes.php”请求数据自动加载该节点的子节点给定已扩展节点的id。
您只需在其上调用.expand()
即可扩展节点。
如果这不起作用,你可以加载模型,当你拥有它时,将它添加到树中并像这样扩展父模型:
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
});
你的问题有点宽泛,所以我希望这会对你有所帮助。
您可能需要查看Ext.data.NodeInterface documentation about how to manipulate trees.