dynatreeプラグインを使用して、複数選択モード(モード3)を使用してチェックボックスツリーを表示しています。
ツリーがajax(遅延読み込みなし)を使用して初期化されると、一部のノードが最初に選択されて読み込まれることを忘れているようです。これらのノードの1つを選択すると、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に追加できると思います。