ドロップダウンに dijit.tree を表示するツリー選択を作成しました。空であっても、ユーザーにフォルダを選択させたくありません。ユーザーは、エンド ノードまたはリーフのみを選択できる必要があります。dijit.tree は、すべての空のフォルダーをリーフとして扱います。どうすればそれをソートできますか?
1228 次
1 に答える
1
_onClickまたはsetSelectedメソッドをオーバーライドする必要があります。マルチペアレントモデルForestStoreModelを使用する場合、これは複雑になります。
fiddle.netを参照してください
そのようにしてみてください。これは、複数のfalseを選択した場合にのみ機能します。
getIconClass: function fileIconClass(item, nodeExpanded) {
var store = item._S,
get = function() {
return store.getValue(item, arguments[0]);
};
// scope: dijit.Tree
if (item.root || get("isDir")) {
if (!item || this.model.mayHaveChildren(item) || get("isDir")) {
return (nodeExpanded ? "dijitFolderOpened" : "dijitFolderClosed");
} else {
return "dijitLeaf";
}
} else {
return "dijitLeaf";
}
},
onClick: function(item, treeNode, e) {
var store = item._S,
get = function() {
return store.getValue(item, arguments[0]);
};
if (get("isDir")) this.set("selectedItems", []);
}
あなたが適切だと思うように適応し、あなたのjsonデータと一致させてください-特にisDir、上記はこのようなjsonのサンプルで機能します
{
identifier: 'id',
label: 'foo',
items: [
{
id: 'item1',
foo: 'file1',
isDir: false},
{
id: 'item2',
foo: 'emptyDir',
isDir: true},
{
id: 'item3',
foo: 'dir',
isDir: true,
children: [
{
id: 'item3_1',
foo: 'fileInDir',
isDir: false}
]}
]
}
于 2012-05-18T10:12:43.610 に答える