我正在使用它:
$('#topicTree').jstree({
"json_data" : {
"ajax" : {
url : serviceUrl
}
},
"plugins" : ["themes", "json_data", "ui", "crrm", "hotkeys"]
});
但是当我点击一个节点时,它会重新启动ajax请求,并再次检索并填充整个顶级树节点的节点。我知道有一个按需或延迟加载功能,但我试图尽可能避免这种情况。我也使用了以下内容:
$("#tree").jstree({
"plugins" : ["themes", "json_data", "ui", "crrm", "hotkeys"],
"json_data" : {
"ajax" : {
"type": 'GET',
"url": function (node) {
//debugger;
var nodeId = "";
var url = "";
if (node == -1)
{
url = "/ajax/gettopics/";
}
return url;
},
"success": function (data) {
//debugger;
return data;
},
"error":function(data) {
//debugger;
alert("error loading tree!");
}
}
}
}).bind("loaded.jstree", function (event, data) {
//alert("TREE 2 IS LOADED!");
});
答案 0 :(得分:1)
好的,所以发现了问题......我被序列化为Json的DTO区分大小写。魔鬼在细节中 - 我改变了命名惯例:
public class JsTreeJsonNode
{
public string data { get; set; }
public Dictionary<string, string> attr { get; set; }
public string state { get; set; }
public List<JsTreeJsonNode> Children { get; set; }
}
到
public class JsTreeJsonNode
{
public string data { get; set; }
public Dictionary<string, string> attr { get; set; }
public string state { get; set; }
public List<JsTreeJsonNode> children { get; set; }
}
儿童的资本'C'确实引起了一些动荡。哎呀...
当子dict被填充时,ajax请求不会被触发,除非它被返回为null或空(零成员),这对我的场景很有效。