Kev*_*Kev 10 javascript ajax jquery json dynatree
我正在使用dynatree插件显示一个复选框树,使用多选模式(模式3).
当使用ajax(没有延迟加载)初始化树时,似乎忘记了最初选择了一些节点.当我选择其中一个节点时,传递给onSelect处理程序的标志值为true,即:它认为我想选择节点.
当我再次单击该复选框时,它会取消选择.似乎在后台选择没有注册,直到我实际点击复选框.我想加载已选择此节点的树.
我用来加载树的json对我来说很好看; 在选择属性是有问题的节点,根节点如此.这是JSON的片段:
{
"expand":true,
"title":"All",
"isFolder":false,
"key":"0",
"isLazy":false,
"addClass":null,
"select":true,
"unselectable":false,
"children": [... omitted for clarity]
}
Run Code Online (Sandbox Code Playgroud)
UPDATE
我这样加载树:
$("#locationsTree").dynatree({
checkbox: true,
selectMode: 3,
initAjax: {
type: "POST",
url: dynaTreeInitUrl
},
classNames:
{
nodeIcon: ""
}
});
Run Code Online (Sandbox Code Playgroud)
其中dynaTreeInitUrl是返回json的url.
如果我像这样对JSON进行硬编码:
$("#locationsTree").dynatree({
checkbox: true,
selectMode: 3,
children: {
"expand":true,
"title":"All",
"isFolder":false,
"key":"0",
"isLazy":false,
"addClass":null,
"select":true,
"unselectable":false,
"children": [{
"expand": true,
"title": "Child",
"isFolder": false,
"key": "1",
"isLazy": false,
"addClass": null,
"select": true,
"unselectable": true,
"children": []
}]
},
classNames:
{
nodeIcon: ""
}
});
Run Code Online (Sandbox Code Playgroud)
有用.:/
更新:
我发现了为什么会这样:
这是dynatree中的一个错误 - 或者可能是想要过于聪明的行为.
如果子节点具有unselectable = true,则在加载子节点时将取消选择父节点,即使父节点具有select = true.这使得无法创建一个树,其中选择是分层的 - 即:拥有它,以便如果选择父级,则自动选择所有子级,并且不能取消选择.我想这可以作为另一种"模式"添加到dynatree中.
我发现了为什么会发生这种情况:
这是动态树中的一个错误 - 或者可能是它试图变得太聪明的预期行为。
如果子节点具有 unselectable = true,则加载子节点时父节点将被取消选择,即使父节点具有 select = true。这使得不可能创建一个选择是分层的树 - 即:如果选择了父级,则所有子级都会自动选择,并且无法取消选择。我想这可以作为另一种“模式”添加到动态树中。
| 归档时间: |
|
| 查看次数: |
3336 次 |
| 最近记录: |