使用ajax时,Dynatree忽略select属性

时间:2013-01-02 16:23:57

标签: javascript jquery ajax json dynatree

我正在使用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]
}

更新

我正在以这种方式加载树:

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

其中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: ""
    }        
});

它有效。 :/

更新

我发现了为什么会这样:

这是dynatree中的一个错误 - 或者可能是想要过于聪明的行为。

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

2 个答案:

答案 0 :(得分:1)

我发现了为什么会这样:

这是dynatree中的一个错误 - 或者可能是想要过于聪明的行为。

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

答案 1 :(得分:0)

您可以使用此代码:

def generate_new(tokens, outfile):
    print('NO')
    new_sents = []
    for i in range(0, len(tokens)):
        first = tokens[i]
        second = tokens[i+1]
        first_found = first
    print('YES')

}

Dynatree Expand Parents of Selected Nodes