這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
- 目的:在瀏覽器上瀏覽電腦指定目錄。
- 技術:golang,jstree
1. golang產生jstree識別的json
1.1 使用”io/ioutil”讀取指定目錄
fileinfos, err := ioutil.ReadDir(dirpath)if err != nil { log.Println("ReadDir error!" + dirpath)}
1.2 使用”encoding/json”產生json資料
type treestate struct { Opened bool `json:"opened"` Disabled bool `json:"disabled"` Selected bool `json:"selected"`}type filetree struct { Id string `json:"id"` Text string `json:"text"` Icon string `json:"icon,omitempty"` State *treestate `json:"state,omitempty"` Children bool `json:"children,omitempty"` Li_attr map[string]string `json:"li_attr,omitempty"` A_attr map[string]string `json:"a_attr,omitempty"`}
1.2.1 忽略為空白的項
在聲明struct時對不必要的項添加omitempty,這樣在產生json時如果該項為空白就會忽略。
1.2.2 嵌套json
- struct中嵌套struct,如*treestate
state := &treestate{Selected: true} // Selected為true的話,在jstree中會預設選中tree.State = state
- struct中使用map,如map[string]string
// A_attr的href項表示該檔案選項的連結地址tree.A_attr = map[string]string{"href": "/download?file=" + tree.Id}
2. jstree使用ajax
<div id="using_ajax"></div><script type="text/javascript">$('#using_ajax').jstree({ 'core' : { 'data' : { 'url' : "/tree_file", "dataType" : "json", 'data' : function (node) { if (node.id==='#') { return { 'id' : "D:" }; //根目錄為D盤 } else { return { 'id' : node.id }; } } } }});</script>
完整代碼:
tree.html
treefile.go