javascript – Dynatree在使用ajax时忽略select属性

前端之家收集整理的这篇文章主要介绍了javascript – Dynatree在使用ajax时忽略select属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用dynatree插件显示一个复选框树,使用多选模式(模式3).

当树使用ajax(无延迟加载)进行初始化时,似乎忘记了最初加载了一些节点.当我选择这些节点之一时,传递给onSelect处理程序的标志值为true,即:它认为我要选择该节点.

当我再次点击该复选框时,它会取消选择.看起来在后台选择没有注册,直到我物理上单击复选框.我想加载树已经选择了这个节点.

我用来加载树的json对我来说很好看对于所讨论的节点,根节点的select属性为true.以下是JSON代码段:

{
"expand":true,"title":"All","isFolder":false,"key":"0","isLazy":false,"addClass":null,"select":true,"unselectable":false,"children": [... omitted for clarity]
}

UPDATE

我以这种方式加载树:

$("#locationsTree").dynatree({
    checkBox: true,selectMode: 3,initAjax: {
        type: "POST",url: dynaTreeInitUrl
    },classNames:
    {
        nodeIcon: ""
    }        
});

其中dynaTreeInitUrl是返回json的url.

如果我像这样硬编码JSON:

$("#locationsTree").dynatree({
    checkBox: true,children: {
        "expand":true,"children": [{
            "expand": true,"title": "Child","isFolder": false,"key": "1","isLazy": false,"addClass": null,"select": true,"unselectable": true,"children": []
        }]
    },classNames:
    {
        nodeIcon: ""
    }        
});

有用. :/

更新:

我发现为什么会发生这种情况:

这是dynatree中的一个错误 – 或者是试图太聪明的行为.

如果子节点的unselectable = true,父进程将在父进程加载时被取消选择,即使父节点具有select = true.这使得它不可能创建一个树,其中选择是分层的 – 即:具有这样的选择,以便如果选择了父选项,则所有子项都将被自动选择,并且不能被取消选择.我想这可以被添加到dynatree作为另一个“模式”.

解决方法

我发现为什么会发生这种情况:

这是dynatree中的一个错误 – 或者是试图太聪明的行为.

如果子节点的unselectable = true,并且不能被取消选择.我想这可以被添加到dynatree作为另一个“模式”.

猜你在找的Ajax相关文章