如何使用新的 jstree v3.0.0 按需加载子项

2023-12-30

我正在寻找一些帮助在 jstree 中按需(扩展)填充子节点。我可以填充父节点,但无法填充子节点。

设想:

我正在使用 jstree 来填充树中的节点。我的数据源是json。但是,我从不同的服务获取父节点,从不同的服务获取子节点。

我正在使用新的 jstree 版本 3.0.0在这里找到:https://github.com/vakata/jstree/zipball/3.0.0-beta8 https://github.com/vakata/jstree/zipball/3.0.0-beta8

我面临什么挑战?:

我想在用户展开父节点时按需加载子节点。可能有数百家公司、数千个站点和数百万个代理,因此不可能一次加载所有数据...(即,将结果公司、站点和代理组合在一起可以工作,但由于性能问题而不可取)。

此处找到的代码示例:http://www.jstree.com/docs/json/ http://www.jstree.com/docs/json/非常隐式,我只能使用提供的示例填充父节点。也许遇到类似解决方案的人可以帮助我找到合适的解决方案。

必需的:

另外,我需要加载 3 层子层,想一个场景:

示例场景:

公司1 -站点1 --代理1 --代理2 -站点2 --Agent3 --Agent4

公司2 -Site3 --Agent5 -Site4 --Agent6 --Agent7

Code:

这是我的代码(仅适用于父节点):

$('#agentsTreev2').jstree({
            "plugins": ["contextmenu", "dnd", "search", "sort", "state", "types", "unique", "wholerow"],
            'core': {
                'data': {

                    'url': function (node) {
                        console.log(node.id);
                        return node.id === '#' ?
                                        'http://localhost:21282/data.svc/Companies?$format=application/json;odata=nometadata;'
                            :
                                        'http://localhost:21282/data.svc/Sites?$select=Site_Id,Name,Company_Id&$filter=Company_Id eq 24&$format=application/json;odata=nometadata;';

//^^^^ 以上是子节点/站点的示例 url,实际 url 应使用父节点公司 ID

                    },
                    'crossDomain': 'true',
                    'type': 'GET',
                    'dataType': 'json',
                    'contentType': 'application/json',
                    'cache': false,
                    'success': function (response) {
                        return response;
                    },
                    'dataFilter': function (data, type) {

                        if (type == "json") {
                            //Replace Name to title so that dynatree can render Title text
                            data = data.replace(/Name/g, "title");
                            //Convert to Json object to allo addition of custom Object
                            var jsonObj = JSON.parse(data);
                            //Hack for WCF Service like in all the functions above.
                            jsonObj = jsonObj.value;

                            for (var i = 0; i < jsonObj.length; i++) {

                                //jstree specific values
                                jsonObj[i]["id"] = jsonObj[i]["Company_Id"];
                                jsonObj[i]["text"] = jsonObj[i]["title"];
                                jsonObj[i]["parent"] = '#';
                                jsonObj[i]["state"] = "closed";
                            }
                            data = JSON.stringify(jsonObj);
                        }

                        return data;
                    },
                    'error': function (node, XMLHttpRequest, textStatus, errorThrown) {
                        // Called on error, after error icon was created.
                        alert('Get Company error: ' + textStatus + ' detail: ' + errorThrown);
                        //return "-1";
                    }
                }
            }
        });

公司数据(父节点):

{"value":[{"Company_Id":"31","Name":"E-Dev"},{"Company_Id":"35","Name":"ggggggggggggg"},{"Company_Id":"36","Name":"ggggggggggggg"},{"Company_Id":"37","Name":"ghhhhhhhhhhhhhhhhhhhhhhh"},{"Company_Id":"38","Name":"kjjkhkh jkhh kjh khkh hkhk"},{"Company_Id":"39","Name":"iiiiiiiiiiiiiiiiii"},{"Company_Id":"40","Name":"dsfhdskfjh"},{"Company_Id":"41","Name":"dfjshfkjds"},{"Company_Id":"42","Name":"dfjshfkjds"},{"Company_Id":"43","Name":"dfjshfkjds"},{"Company_Id":"44","Name":"dfjshfkjds"},{"Company_Id":"45","Name":"dfjshfkjds"},{"Company_Id":"46","Name":"dfjshfkjds"},{"Company_Id":"47","Name":"dfjshfkjds"},{"Company_Id":"48","Name":"dfjshfkjds"},{"Company_Id":"49","Name":"dfjshfkjds"},{"Company_Id":"50","Name":"dfjshfkjds"},{"Company_Id":"51","Name":"dfjshfkjds"},{"Company_Id":"52","Name":"dfjshfkjds"},{"Company_Id":"53","Name":"dfjshfkjds"},{"Company_Id":"54","Name":"dfjshfkjds"},{"Company_Id":"55","Name":"dzfdfskdfh"},{"Company_Id":"56","Name":"sdfhdsfh"},{"Company_Id":"57","Name":"jfhjdsfhsdhfj"},{"Company_Id":"58","Name":"fdhafksdfkjdsfhsdk"},{"Company_Id":"59","Name":"dfksdfhksdhfkskd"},{"Company_Id":"60","Name":"test"},{"Company_Id":"61","Name":"test"},{"Company_Id":"62","Name":"ErnestDev"},{"Company_Id":"63","Name":"EarnestDev"},{"Company_Id":"64","Name":"Earnestdev"},{"Company_Id":"65","Name":"hsdkfhksdhkfjh"}]}

站点(公司子级)数据:

{"value":[{"Site_Id":"31","Company_Id":"24","Name":"Nottingham"}, {"Site_Id":"35","Company_Id":"24","Name":"Nottingham"}, {"Site_Id":"36","Company_Id":"24","Name":"Nottingham"}, {"Site_Id":"38","Company_Id":"24","Name":"Nottingham"}]}

代理(但目前不适用)

{"value":[{"Agent_Id":"61","Name":"","Site_Id":"40"},{"Agent_Id":"62","Name":"","Site_Id":"41"},{"Agent_Id":"63","Name":"","Site_Id":"42"},{"Agent_Id":"64","Name":"","Site_Id":"43"},{"Agent_Id":"65","Name":"","Site_Id":"44"},{"Agent_Id":"66","Name":"","Site_Id":"45"},{"Agent_Id":"67","Name":"","Site_Id":"46"},{"Agent_Id":"180","Name":"","Site_Id":"49"},{"Agent_Id":"181","Name":"","Site_Id":"49"},{"Agent_Id":"182","Name":"","Site_Id":"49"},{"Agent_Id":"183","Name":"","Site_Id":"49"},{"Agent_Id":"184","Name":"","Site_Id":"49"}]}

请注意,这只是示例数据,正在查询的 wcf odata 服务是启用 CORS。另请注意,我已成功填充父节点。

另外,请注意,此处发现的任何拼写错误都只是编辑这篇文章以保护关键数据的结果。

I 我只面临填充子节点和子节点的子节点的问题。

请帮忙。我有点被困在尝试各种 jstree 选项.. :(

Edit:

我得到的父节点:


我启用了延迟加载对于父(站点)节点并使用initAjax发送辅助 ajax 调用以延迟加载子项,效果很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用新的 jstree v3.0.0 按需加载子项 的相关文章

  • jQuery 面板滑块通过单击按钮打开但不会关闭

    我的页面上有一个按钮 可以使用 jquery 和 Modernizr 框架打开右侧面板 按钮位于屏幕最右侧 单击时 它会向左滑动并打开打开的面板 问题是 再次单击时它不会滑回到原来的位置 HTML div class cd panel fr
  • Flot 0.8.2 折线图 - 颜色错误

    我正在使用 Flot 折线图并设置它们的颜色 我发现了一个奇怪的错误 在前 3 种颜色之后 绘图对所有其他线条使用最后一种颜色 这不是正确的行为 更有趣的是图例显示了正确的颜色 这是一个已知的错误 var dataSet label d1
  • 如何从 jQuery 获取 ajax 请求下载 Excel

    我有一个 Spring MVC 视图 它提供了一个 excel 文件 但是 我现在修改了该过程 以便用户获得一个模式框 他们可以在下载 excel 之前在其中选择一些选项 这些选定的选项将发送到视图 我的请求看起来像这样 get downl
  • 如何使用 jQuery 和 .ajax 方法发送数组而不转义括号?

    我试图发送具有多个值的相同参数名称 但即使在阅读了 SO 上的帖子后也无法弄清楚如何做到这一点 我想要一个数组destination input var myObject search zip params search zip searc
  • 如何使用 jQuery 和“this”捕获更改的表单元素值

    我有以下代码 每当我的 Web 表单中发生元素更改时 该代码都会起作用 我一直在纠结的是如何捕捉表单字段元素 id name and 改变值当更改事件被触发时 谁能帮我解决这个问题吗 Thanks JavaScript
  • 获取变量的名称属性[重复]

    这个问题在这里已经有答案了 我想知道是否可以在 javascript 或 JQuery 中获取变量的名称 假设我在 javascript 中声明一个变量 如下所示 var customerNr 456910 如果函数接收变量 我如何返回变量
  • jQuery 延迟可以取消吗?

    我遇到了一种情况 我想取消延期 延迟与 ajax 调用相关联 为什么我使用延迟 我不使用 ajax 返回的普通 xhr 对象 我使用的是 jsonp 这意味着我无法使用 HTTP 状态代码进行错误处理 并且必须将它们嵌入到响应中 然后检查代
  • 将结果从 pdo 发送到 ajax 时遇到问题

    我想做的是 如果用户成功注册 pdo 将提供信息并将其发送到 ajax 如果用户注册与否 ajax 将发送消息 在我将这个条件放入我的 pdo 中后 它工作正常 现在它不会再插入 并且 ajax 告诉 注册用户时出错 每时每刻 script
  • 使用 jQuery 选择焦点文本在 Safari 和 Chrome 中不起作用

    我有以下 jQuery 代码 类似于这个问题 https stackoverflow com questions 480735 在 Firefox 和 IE 中工作 但在 Chrome 和 Safari 中失败 没有错误 只是不起作用 有解
  • 为什么jQuery一开始就有一个“window=this”并说它会加速对window的引用?

    当我打开 jQuery 的源代码时 我发现了这一行 var Will speed up references to window and allows munging its name window this 这条线路为何以及如何加速 ja
  • 无法从本地文件夹运行 Jquery

    你好 我是网络开发新手 我需要与JQuery 即使我已经成功尝试过一个jquery但仅在将文件复制到我的在线 ftp 文件夹后 我完全无法从本地文件夹运行它 请解释一下 如何我可以测试一些新脚本吗 进行额外的练习将文件复制到 ftp 文件夹
  • 使用 fadeIn() 时,jQuery“未捕获类型错误:未定义不是函数”;

    我是 JS 新手 正在编写一个基本的富含 jQuery 的网页 其中同一文档中的每个页面都具有淡入 淡出功能 使用具有单独 ID 的相同 div 元素 无论如何 当我尝试淡入当前页面时 我收到错误 未捕获的类型错误 未定义不是函数 我在网上
  • 在选择下拉列表中选择特定选项时添加输入框

    我需要在选择选项时将输入添加到选择选项中 每当用户选择 其他 时 就会出现一个输入框供用户输入数据 HTML
  • 如何让更大的布局适合小设备屏幕?

    我有一个小问题meta viewport元素 问题是我的布局min width比我想要使用的许多屏幕分辨率都要大 所以将其设置为 没有帮助 结果我得到的页面必须缩小以适应设备宽度 如果我什至添加像 它也不起作用 发现了一个黑客来自CSS 技
  • 如何按日期升序对对象进行排序?

    如果我有一个对象列表 var objectList LIST OF OBJECT each object列表中包含三个属性 name date gender 如何按 对列表中的对象进行排序date 属性升序 the date 属性包含字符串
  • jQuery 删除函数真的删除 Dom 元素吗?

    我真的想知道 jQuery 是否remove http api jquery com remove 函数确实从 DOM 中删除元素 首先 我看了here https stackoverflow com questions 2185760 j
  • 是否可以全局文本对齐表列而不在每行中指定类?

    想知道提高效率的最佳方法是什么 也许使用 jQuery 我可以接受不兼容 ie7 的解决方案 如果需要的话 即使缺乏对 ie8 的支持也可以 table th td class cal center td td left td td cla
  • jquery 验证最小长度规则不起作用

    我有一个带有密码字段的表单 密码长度必须至少为 8 个字符
  • 如何在 laravel 中查询 json 列?

    我用的是 Laravel 5 6 我有一块田地 字段的数据类型为json 字段 desc 字段 的值如下所示 code 1 club CHE country ENGLAND code 2 club BAY country GERMANY c
  • 如何选中表格中输入文本焦点上的复选框

    我试图在输入文本焦点上检查表 DOM 中的复选框 但无法访问复选框元素 但我的焦点正在工作 这是我的 jsfiddle 链接https jsfiddle net 9qha9vft https jsfiddle net 9qha9vft 这是

随机推荐

  • 将 OneSignal 与 Flutter 结合使用

    我注意到我可以使用 Firebase 来实现推送通知功能 但我的项目需要使用OneSignal 在Flutter中可以实现吗 我找不到任何谈论此事的帖子或文章 Thanks EDIT OneSignal 现在有一个官方插件https git
  • Python - 如何在 int 转动输入中的空值后中断 while 循环? [复制]

    这个问题在这里已经有答案了 我想在输入空输入时使 while 循环中断 我知道该错误是由于 int 函数造成的 因为它无法将空输入转换为整数 但我该如何做我想要写的事情呢 while True numb int input number i
  • 用于说出结果的 Google 搜索参数 (tts)

    我正在尝试在 Ubuntu 上自动执行我的任务 谷歌搜索参数是什么才能说出结果 例如 当我通过声音搜索唐纳德 特朗普时 通过 Chrome 上的麦克风 然后谷歌说出 唐纳德 特朗普是美国第 45 任总统 目前我知道以下字符串将显示唐纳德 特
  • 错误:找不到从未知到文本的转换函数

    PostgreSQL 在我的 select 语句之一上出现错误 我在网上寻找答案 却空手而归 另一个问题给出的答案不适合我的问题 ERROR failed to find conversion function from unknown t
  • laravel -foreignId() 和 unsignedBigInteger() 之间的区别

    Laravel 新手 链接表时foreignId 和unsignedBigInteger 有什么区别 table gt unsignedBigInteger user id table gt foreignId user id 我两种都尝试
  • PHP 推特 OAuth

    我正在尝试通过 twitter oauth 对您网站上的用户进行注册和授权 我有问题 我在用http github com abraham twitteroauth http github com abraham twitteroauth
  • 在 Mac OS X 10.9.5 上安装 Ruby 2.1.3 时检查或清理工作树错误

    我正在尝试使用以下命令在 Mac OS X 10 9 5 上安装 Ruby 2 1 3rbenv install 2 1 3命令 但是我收到下面的错误消息 我尝试了有关堆栈溢出和其他地方的所有建议 似乎什么都不起作用 我目前拥有 10 9
  • 如何将自定义 jar 发布到本地 Apache Ivy 存储库

    我已阅读所有教程和示例 但仍然无法在本地 Ivy 存储库中发布一组自定义 jar 编辑 基本上我想要与 maven install plugin 相同的行为 这是我的设置 我有一个 Ant 任务 它在给定文件夹中生成 jars 文件夹名称不
  • 如何在优先级队列中使用pair,然后使用键作为优先级返回值

    所以我想使用最小的键作为优先级 然后返回相应键的 VALUE import javafx util Pair import java util PriorityQueue public class Test public static vo
  • 实体框架更新 - 上下文当前未跟踪实体

    我正在尝试更新实体 但收到以下错误 上下文当前未跟踪该实体 我的数据库表由以下字段组成 赛程日期 联赛 ID FK A 队 FK B 队 FK 我的代码如下 public void UpdateFixture Fixture validFi
  • 如何在 Next Js (React) 中实施 adobe 分析?

    我已经提出了在我构建的 React js 应用程序中添加 adobe Analytics 的要求 请抱歉 我对如何实现它没有任何基本的想法 理解 所以专家的帮助对我来说非常有帮助 要求是我需要在中实施 adobe 分析next js wit
  • .Net ThreadPool 线程上的异常

    复制 如何从 ThreadPool QueueUserWorkItem 捕获异常 https stackoverflow com questions 753841 我正在 Net ThreadPool 上对多个委托进行排队 以进行大量独立的
  • 如何在 Aptana Studio 中自动缩进 JavaScript 代码?

    之前我使用Eclipse进行PHP和Java开发 我喜欢这个命令Ctrl i自动缩进代码 现在我使用基于Eclipse的Aptana Studio进行JavaScript开发 我想自动缩进我的 JavaScript 代码 但是Ctrl i删
  • 如何将外部CSS应用到flutter webview中的html渲染

    我想将外部 css 应用到在 flutter webview 中渲染的 html 在 android 中 它是使用以下语法完成的 您可以通过调用以下命令将任何 JavaScript 提交到您的 Web 视图 flutterWebViewPl
  • “System.Data.Entity.Internal.AppConfig”的类型初始值设定项引发异常

    我正在 MVC 4 aspnet 网站中使用 EF5 在本地 一切正常 但是当我将其发布到 IIS 并尝试进入时 出现错误 System Data Entity Internal AppConfig 的类型初始值设定项 抛出异常 详细异常情
  • 填充div的空间

    我想要一个元素来填充父 div 的剩余空间 我已经成功做到了这一点 您可以在此处看到 链接已删除 但填充 div 右侧 位于左侧 div 下方 我基本上希望右侧的 div 从左侧的 div 结束的地方开始 希望这是有道理的
  • 从 TangoService_connectOnFrameAvailable 保存帧

    如何通过 TangoService connectOnFrameAvailable 保存帧并在我的计算机上正确显示它 作为此参考页 https developers google com project tango apis c struc
  • Angular bootstrap typeahead 不适用于 Angular 1.3.0

    我创建了一个小插件来表明这是行不通的 任何人都可以帮助我如何使用 typeahead 与 1 3 0 angularJS 提供替代解决方案 我们将其与 angular bootstrap 0 11 0 和最新版本的 bootstrap 一起
  • 角度测试在反应式表单上提交事件

    Context 我有一个具有基本形式 反应形式 的组件 我尝试测试此表单上的提交事件 看看它是否正确调用了必要的方法 我的问题 无法触发表单的提交事件 Files 组件 html
  • 如何使用新的 jstree v3.0.0 按需加载子项

    我正在寻找一些帮助在 jstree 中按需 扩展 填充子节点 我可以填充父节点 但无法填充子节点 设想 我正在使用 jstree 来填充树中的节点 我的数据源是json 但是 我从不同的服务获取父节点 从不同的服务获取子节点 我正在使用新的