Fancytree 根尚未渲染
Fancytree root has not beed rendered
我有一棵这样的花式树:
var tree: Fancytree.Fancytree;
var options: any = <Fancytree.FancytreeOptions>{
clickFolderMode: 1,
source: $.ajax({
url: ..., // some url to source
type: "POST",
}),
extensions: ["dnd"],
dnd: {
autoExpandMS: 1000,
preventVoidMoves: true,
dragStart: function (node) {
...
},
dragStop: function (node) {
...
},
dragEnter: function (node, sourceNode) {
...
},
dragOver: function (node, sourceNode, hitMode) {
...
},
dragDrop: function (node, sourceNode, hitMode) {
...
},
revert: true
},
init: function (isReloading, isError) {
...
}
};
tree = $('#tree3').fancytree(options);
我正在加载到树源的数据如下所示:
res = {
ContentEncoding: null,
ContentType: null,
Data: {
activate: false,
children: {
[0]: {
activate: false,
children: null,
expand: false,
extraClasses: null,
focus: false,
hideCheckbox: false,
href: null,
icon: null,
isFolder: false,
isLazy: false,
key: "2",
layerId: "node2",
noLink: false,
@select: false,
title: "I am node 2",
tooltip: null,
@type: Layer,
unselectable: false
},
[1] : {
...
},
[2] : {
...
},
...
},
expand: true,
extraClasses: null,
focus: false,
hideCheckbox: false,
href: null,
icon: null,
isFolder: true,
isLazy: false,
key: "1",
layerId: null,
noLink: false,
@select: false,
title: "root",
tooltip: null,
@type: Group,
unselectable: false
},
JsonRequestBehavior: DenyGet,
MaxJsonLength: ...,
RecursionLimit: null
}
res 是 System.Web.Mvc.JsonResult
.
的类型
但是当我的树被渲染时,我看到了类似的东西:
|
--- I am node 2
|
--- I am node 3
|
--- I am node 4
|
...
但我希望看到这样的树:
root
|
--- I am node 2
|
--- I am node 3
|
--- I am node 4
|
...
我不得不说这棵树有两个版本。
首先是dynatree。
这个 dynatree 工作得很好。它具有相同的来源和相同的数据。
我决定将 dynatree 更改为 fancytree。
我的 jquery 代码没有删除树根或没有禁用它,所以我觉得这可能是我的树配置有问题。我在想这可能是树选项或数据格式或某些参数错误的问题?我真的不知道。
如果我在树初始化后尝试检查根节点,我会看到类似的内容:
所以这棵树有一个根 - 只是没有渲染它。
有什么建议吗?
我要补充一点。我不是在等待准备好的小费。我仍在寻找我的错误的答案,我刚才尝试了一些东西。
我将树源从动态 ajax post 替换为静态 json,这是此 ajax post 的答案。就这样:
发件人:
source: $.ajax({
url: ..., // some url to source
type: "POST",
}),
这是 HTML 中的 fancytree - 没有根节点:
静态:
source: [
{
"title": "root",
"layerId": null,
"isFolder": true,
"key": "1",
"expand": true,
"isLazy": false,
"tooltip": null,
"href": null,
"icon": null,
"extraClasses": null,
"noLink": false,
"activate": false,
"focus": false,
"select": false,
"hideCheckbox": false,
"unselectable": false,
"type": 0,
"children": [
{
"title": "I am node 2",
"layerId": "node2",
"isFolder": false,
"key": "2",
"expand": false,
"isLazy": false,
"tooltip": null,
"href": null,
"icon": null,
"extraClasses": null,
"noLink": false,
"activate": false,
"focus": false,
"select": false,
"hideCheckbox": false,
"unselectable": false,
"type": 1,
"children": null
},
{ ... },
{ ... },
{ ... },
{ ... }
]
}
并且我的树已经按照我的预期呈现 - 有根。
这是 HTML 中的 fancytree - 根节点:
我很困惑。这对我意味着什么?我去post获取数据的方式有问题吗?
我更改了获取数据的方式:
source: $.ajax({
url: ..., // some url to source
type: "POST",
}),
至:
source: {
url: ..., // some url to source
type: "POST",
},
这对我来说无关紧要,因为我仍然有这个错误,但我想说我不需要使用额外的 $.ajax 语句 - jquery.fancytree.js
做到了。
Fancytree 维护着一个不可见的 根节点。如果您传递 children 的列表,它们将显示为 top-level 个节点。
为了创建一个 visible top-level 节点,您应该传递一个包含 children 列表的节点(您将如何定义其标题和否则其他属性?):
[
{
"title": "My root",
"children": [
{"title": "I am node 2", ...},
{"title": "I am node 3", ...},
...
]
}
]
我有一棵这样的花式树:
var tree: Fancytree.Fancytree;
var options: any = <Fancytree.FancytreeOptions>{
clickFolderMode: 1,
source: $.ajax({
url: ..., // some url to source
type: "POST",
}),
extensions: ["dnd"],
dnd: {
autoExpandMS: 1000,
preventVoidMoves: true,
dragStart: function (node) {
...
},
dragStop: function (node) {
...
},
dragEnter: function (node, sourceNode) {
...
},
dragOver: function (node, sourceNode, hitMode) {
...
},
dragDrop: function (node, sourceNode, hitMode) {
...
},
revert: true
},
init: function (isReloading, isError) {
...
}
};
tree = $('#tree3').fancytree(options);
我正在加载到树源的数据如下所示:
res = {
ContentEncoding: null,
ContentType: null,
Data: {
activate: false,
children: {
[0]: {
activate: false,
children: null,
expand: false,
extraClasses: null,
focus: false,
hideCheckbox: false,
href: null,
icon: null,
isFolder: false,
isLazy: false,
key: "2",
layerId: "node2",
noLink: false,
@select: false,
title: "I am node 2",
tooltip: null,
@type: Layer,
unselectable: false
},
[1] : {
...
},
[2] : {
...
},
...
},
expand: true,
extraClasses: null,
focus: false,
hideCheckbox: false,
href: null,
icon: null,
isFolder: true,
isLazy: false,
key: "1",
layerId: null,
noLink: false,
@select: false,
title: "root",
tooltip: null,
@type: Group,
unselectable: false
},
JsonRequestBehavior: DenyGet,
MaxJsonLength: ...,
RecursionLimit: null
}
res 是 System.Web.Mvc.JsonResult
.
但是当我的树被渲染时,我看到了类似的东西:
|
--- I am node 2
|
--- I am node 3
|
--- I am node 4
|
...
但我希望看到这样的树:
root
|
--- I am node 2
|
--- I am node 3
|
--- I am node 4
|
...
我不得不说这棵树有两个版本。 首先是dynatree。 这个 dynatree 工作得很好。它具有相同的来源和相同的数据。
我决定将 dynatree 更改为 fancytree。
我的 jquery 代码没有删除树根或没有禁用它,所以我觉得这可能是我的树配置有问题。我在想这可能是树选项或数据格式或某些参数错误的问题?我真的不知道。
如果我在树初始化后尝试检查根节点,我会看到类似的内容:
所以这棵树有一个根 - 只是没有渲染它。
有什么建议吗?
我要补充一点。我不是在等待准备好的小费。我仍在寻找我的错误的答案,我刚才尝试了一些东西。
我将树源从动态 ajax post 替换为静态 json,这是此 ajax post 的答案。就这样:
发件人:
source: $.ajax({
url: ..., // some url to source
type: "POST",
}),
这是 HTML 中的 fancytree - 没有根节点:
静态:
source: [
{
"title": "root",
"layerId": null,
"isFolder": true,
"key": "1",
"expand": true,
"isLazy": false,
"tooltip": null,
"href": null,
"icon": null,
"extraClasses": null,
"noLink": false,
"activate": false,
"focus": false,
"select": false,
"hideCheckbox": false,
"unselectable": false,
"type": 0,
"children": [
{
"title": "I am node 2",
"layerId": "node2",
"isFolder": false,
"key": "2",
"expand": false,
"isLazy": false,
"tooltip": null,
"href": null,
"icon": null,
"extraClasses": null,
"noLink": false,
"activate": false,
"focus": false,
"select": false,
"hideCheckbox": false,
"unselectable": false,
"type": 1,
"children": null
},
{ ... },
{ ... },
{ ... },
{ ... }
]
}
并且我的树已经按照我的预期呈现 - 有根。
这是 HTML 中的 fancytree - 根节点:
我很困惑。这对我意味着什么?我去post获取数据的方式有问题吗?
我更改了获取数据的方式:
source: $.ajax({
url: ..., // some url to source
type: "POST",
}),
至:
source: {
url: ..., // some url to source
type: "POST",
},
这对我来说无关紧要,因为我仍然有这个错误,但我想说我不需要使用额外的 $.ajax 语句 - jquery.fancytree.js
做到了。
Fancytree 维护着一个不可见的 根节点。如果您传递 children 的列表,它们将显示为 top-level 个节点。
为了创建一个 visible top-level 节点,您应该传递一个包含 children 列表的节点(您将如何定义其标题和否则其他属性?):
[
{
"title": "My root",
"children": [
{"title": "I am node 2", ...},
{"title": "I am node 3", ...},
...
]
}
]