我通过Json文件获取我的树,它看起来像
root > parent1 > parent > child1 : child2 : child3 : etc
我添加了eventHandler,对于一些孩子,通过点击我得到了一些东西,如表,信息等。问题是,当我点击child1时,我想从其他json文件中添加一个树分支。我从jsTree文档中获取了示例
$('#tree').jstree({
'core' : {
'data' : {
'url' : function (node) {
return node.id === '#' ?
'ajax_roots.json' :
'ajax_children.json';
},
'data' : function (node) {
return { 'id' : node.id };
}
}
});
并将其设置为我的代码......
var $industry = $('#industry');
$industry.jstree({
"core" : {
"animation" : 0,
"check_callback" : true,
"themes" : {
"dot": true,
"stripes" : true,
"responsive": false
},
'data' : {
'url' : function (node) {
return node.id === '#' ?
'data/industry.json' :
'data/SDTM.json';
},
'data' : function (node) {
return { 'id' : node.id };
}
}
}});
然后我在要合并的孩子上添加了eventHandler
// ===== Click event on node =====
for(var i = 0; i < data.selected.length; i++) {
var node = data.instance.get_node(data.selected[i]).text;
if (node == "SDTM 3.1.1"){
//console.log(node);
$.jstree._reference($industry)
.create_node(
'select_node.jstree', 'after',
{ state: 'open', data: 'data/SDTM.json' }
); }
}
})
.jstree();
并在控制台中我得到下一个错误
Uncaught TypeError: $.jstree._reference is not a function
我做错了什么?
答案 0 :(得分:1)
我会这样做:
for (var i = 0; i < data.selected.length; i++) {
var node = data.instance.get_node(data.selected[i]),
nodeText = node.text;
if (nodeText == "SDTM 3.1.1") {
//console.log(node);
// get data for the branch, need to write code here
var branchJson = ... data/SDTM.json
/*
branchJson should contain an array of objects,
each object may have keys like below
{
text : 'Node text'
children : [...],
state : { 'open' }
}
*/
// iterate nodes in received json
branchJson.forEach( function(obj) {
data.instance.create_node( node, obj, 'after' );
})
}
}