如何在jstree的data配置项中使用变量?现有变量赋值写法不生效
问题原因
你的treedata数组中每个节点都是JSON字符串格式,jstree的core.data配置不支持元素为字符串的数组类型,仅支持原生JS对象数组、完整的JSON数组字符串或异步请求配置。你第二种写法的示例本身存在语法错误,猜测你实际运行时是直接写的不带外层引号的对象数组,所以能正常渲染。
正确修改方案
方案1:直接将treedata定义为原生对象数组(推荐)
把每个节点外层的引号去掉,就可以直接赋值给data配置项,代码如下:
var treedata = [ { "id" : "ajson1", "parent" : "#", "text" : "Customer" }, { "id" : "ajson2", "parent" : "ajson1", "text" : "Order number" }, { "id" : "ajson3", "parent" : "ajson1", "text" : "Date" }, { "id" : "ajson4", "parent" : "#", "text" : "Company Name" }, { "id" : "ajson5", "parent" : "#", "text" : "Contact Name" }, { "id" : "ajson6", "parent" : "#", "text" : "Name1" }, { "id" : "ajson7", "parent" : "#", "text" : "Product number1" } ]; $('#data').jstree({ 'core' : { 'data' : treedata } });
方案2:如果必须保留JSON字符串格式的节点
可以遍历数组把每个字符串解析成JS对象:
var treedata = ['{ "id" : "ajson1", "parent" : "#", "text" : "Customer" }', '{ "id" : "ajson2", "parent" : "ajson1", "text" : "Order number" }', '{ "id" : "ajson3", "parent" : "ajson1", "text" : "Date" }', '{ "id" : "ajson4", "parent" : "#", "text" : "Company Name" }', '{ "id" : "ajson5", "parent" : "#", "text" : "Contact Name" }', '{ "id" : "ajson6", "parent" : "#", "text" : "Name1" }', '{ "id" : "ajson7", "parent" : "#", "text" : "Product number1" }']; // 逐个解析JSON字符串为对象 treedata = treedata.map(item => JSON.parse(item)); $('#data').jstree({ 'core' : { 'data' : treedata } });
内容的提问来源于stack exchange,提问作者gromax
相关产品推荐
相关产品推荐

