5

ドキュメントリストのインデックスを作成するためにjsTreeを使用しています。JSONを使用してツリーを作成します。問題と質問があります。

私の問題は、フォルダとファイルの両方に同じアイコン(タイプで設定されたデフォルトのアイコン)が表示されることです。デフォルトのアイコンを変更すると、すべてのツリーアイコンがそのアイコンに設定されます。タイププラグインを使用しない場合、すべてのアイコンにデフォルトのフォルダーアイコンが使用されます。

jstree構成:

$("#agac_tutacagi").jstree({
    "plugins" : [ "themes", "json_data", "types", "ui"],

    "core":{
        "animation":500,
        "strings":{
            "loading":"Yükleniyor"
        }
    },

    "types":{
        "types":{
            "max_children" : -2,
            "max_depth" : -2,

            "folder" : {
                "valid_children" : [ "default", "dizin", "dosya" ],
                "icon" : {
                    "image" : "/static/p/js/jsTree/_demo/folder.png"
                }
            },
            "file" : {
                "valid_children" : "none",
                "icon" : {
                    "image" : "/static/p/js/jsTree/_demo/file.png"
                }
            },
            "default" : {
                "icon" : {
                    "image" : "/static/p/js/jsTree/_demo/file.png"
                }
            }
        }
    },

    "json_data" : {
        "ajax" : {
            "url" : "/dokumantasyon/dokumanAgaciOgesiAl/"
        }
    }
});

サンプルJSON:

[{
  "data": {
    "icon": "folder",
    "title": "Sıkça Sorulan Sorular"
  },
  "children": [{
    "data": {
      "icon": "file",
      "attr": {
        "onclick": "dokuman_getir(4)"
      },
      "title": "Program makbuz basmadı"
    }
  }]
}]

アイコンは、sjtreeのドキュメントに示されているように、データディクショナリ内に設定されます。しかし、それは役に立たない。エラーは発生しません。ツリーのアイコン以外はすべて問題ありません。

2番目の質問は、jstreeを構成するにはどうすればよいですか。親ノード(フォルダー)をクリックすると、展開矢印がクリックされたかのように展開されます。

4

2 に答える 2

7

応答データは次のようになっている必要があります。

[{"attr":{"id":"node_2","rel":"folder"},"data":"root","state":"closed"}]

これは1つのノードを持つ配列ですが、配列内で複数を返すことで複数のノードを作成できます。

これ"state":"closed"は、クリック/展開されたときにサーバーから子ノードを要求するようにjsTreeに指示するためのキーです。

は、上記のノード"rel" : "folder"で定義されたフォルダータイプを使用するようにjsTreeに指示します。次に、タイプに"types"指定されたアイコンが使用されます。"folder"

于 2010-07-26T01:31:52.727 に答える
6

クリックして展開する動作を作成するには、typesプラグインを使用して、デフォルトのクリック動作をオーバーライドします。

"types":{
    "types":{
        "max_children" : -2,
        "max_depth" : -2,
        "default" : {
            "valid_children" : [ "default"],            
            "select_node" : function (e) {
                this.toggle_node(e);
                return false;
            }
        },
        ...
    "plugins" : [ "themes", "html_data", "ui","types" ]
于 2010-08-24T10:40:54.300 に答える