Я использую плагин 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 в качестве другого "режима".