Подтвердить что ты не робот

Dynatree игнорирует свойство select при использовании ajax

Я использую плагин dynatree для отображения дерева меток, используя режим множественного выбора (режим 3).

Когда дерево инициализируется с помощью ajax (без ленивой загрузки), кажется, что забывается, что сначала загружаются некоторые узлы. Когда я выбираю один из этих узлов, значение флага, переданного в обработчик onSelect, истинно, т.е. Он считает, что я хочу выбрать node.

Когда я снова нажимаю флажок, он отменяет выбор. Кажется, что на заднем плане выбор не регистрируется, пока я физически не щелкнуть по нему. Я хочу загрузить дерево с помощью этого node уже выбранного.

json, который я использую для загрузки дерева, выглядит хорошо для меня; свойство select истинно для рассматриваемого node, root node. Вот фрагмент 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 - это URL-адрес, который возвращает json.

Если я жестко кодирую 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: ""
    }        
});

он работает.:/

UPDATE:

Я обнаружил, почему это происходит:

Это ошибка в динамике - или, возможно, намеренное поведение, когда она пытается быть слишком умной.

Если дочерний элемент node имеет unselectable = true, родительский элемент будет не выбран, когда ребенок будет загружен, даже если родительский элемент имеет value = true. Это делает невозможным создание дерева, где выбор является иерархическим - т.е. Иметь его так, чтобы, если выбран родительский элемент, все дети автоматически выбираются и не могут быть отбракованы. Я полагаю, что это можно было бы добавить к dynatree в качестве другого "режима".

4b9b3361

Ответ 1

Я обнаружил, почему это происходит:

Это ошибка в динамике - или, возможно, намеренное поведение, когда она пытается быть слишком умной.

Если дочерний элемент node имеет unselectable = true, родительский элемент будет не выбран, когда ребенок будет загружен, даже если родительский элемент имеет value = true. Это делает невозможным создание дерева, где выбор является иерархическим - т.е. Иметь его так, чтобы, если выбран родительский элемент, все дети автоматически выбираются и не могут быть отбракованы. Я полагаю, что это можно было бы добавить к dynatree в качестве другого "режима".