フロントエンドツリー構造実現のztreeの実現
3784 ワード
最近、プロジェクトの必要性のため、木の構造を実現して中国の各省・市街地を展示して、データはデータベースからロードして来て、ネット上で多くの木の構造のプラグインを探して、例えばeasyui、dynatree、ztreeなど、彼らの実現方式は大同小異です.最後にztreeを選びました.
zTreeは、jQueryによる多機能「ツリープラグイン」です.優れたパフォーマンス、柔軟な構成、さまざまな機能の組み合わせがzTreeの最大の利点です(公式サイトで説明).
jsとcssの導入
jquery.ztree.core-3.5.js
jquery.js
zTreeStyle.cssツリー構造のスタイル
公式サイトのアドレス:http://www.ztree.me/v3/main.php#_zTreeInfo
個人的にztreeの最大の特徴は、ノードが多い場合、ページのロード中に遅い場合があるなど、遅延ロード技術を提供することであり、ztreeはこの問題に対して最適化しています.
具体的な実装:
ページはjsonデータを受け入れて簡単なjsonデータと標準的なjsonデータに分けます
簡単なjsonデータ:
{id:1,pId:0,name:"親ノード1"},{id:11,pId:1,name:"子ノード1"},{id:12,pId:1,name:"子ノード2"}
標準のjsonデータフォーマット:
{name:[親ノード1],children:[
{name:「サブノード1」},
{name:「サブノード2」}
]}
標準的なjsonデータは典型的なツリー親子関係であることがわかる.
ここでは、データベース内のテーブルのデータ格納方式に基づいて、どのjsonデータフォーマットを採用するかを決定することができる.
ページの実装方法:
1.settingの設定
2.ノード、簡単なjsonデータ
3.ページに入ったときに読み込む
以上が最も簡単なztreeの実現方式である.
バックグラウンドからajaxでjsonデータを読み込みます.
上記の取得ノードデータ情報に比べて、ここではajaxによって実現され、得られたdataはjsonフォーマットである.
ページにはidがtreeDemoであればよいのに.
treeを実装した後にtreenodeのクリック時間が必要になる場合があります.APIを調べてみるとsettingにonclick時間があることがわかります.ここでは関数を書いて、onclickを実装するときにコールバックします.
次のように
settingでコールバックを実現し、以下のようにする.
callback: { onClick: zTreeOnClick },
treenodeをクリックすると、idがechoActiveのdivにデータtextが自動的に埋め込まれます.
zTreeは、jQueryによる多機能「ツリープラグイン」です.優れたパフォーマンス、柔軟な構成、さまざまな機能の組み合わせがzTreeの最大の利点です(公式サイトで説明).
jsとcssの導入
jquery.ztree.core-3.5.js
jquery.js
zTreeStyle.cssツリー構造のスタイル
公式サイトのアドレス:http://www.ztree.me/v3/main.php#_zTreeInfo
個人的にztreeの最大の特徴は、ノードが多い場合、ページのロード中に遅い場合があるなど、遅延ロード技術を提供することであり、ztreeはこの問題に対して最適化しています.
具体的な実装:
ページはjsonデータを受け入れて簡単なjsonデータと標準的なjsonデータに分けます
簡単なjsonデータ:
{id:1,pId:0,name:"親ノード1"},{id:11,pId:1,name:"子ノード1"},{id:12,pId:1,name:"子ノード2"}
標準のjsonデータフォーマット:
{name:[親ノード1],children:[
{name:「サブノード1」},
{name:「サブノード2」}
]}
標準的なjsonデータは典型的なツリー親子関係であることがわかる.
ここでは、データベース内のテーブルのデータ格納方式に基づいて、どのjsonデータフォーマットを採用するかを決定することができる.
ページの実装方法:
1.settingの設定
var setting = {
data: {
simpleData: {
enable: true
}
}
};
2.ノード、簡単なjsonデータ
var zNodes =[
{ id:1, pId:0, name:" 1 - "},
{ id:11, pId:1, name:" 11 - "},
{ id:111, pId:11, name:" 111"},
{ id:112, pId:11, name:" 112"},
{ id:113, pId:11, name:" 113"},
{ id:114, pId:11, name:" 114"},
{ id:12, pId:1, name:" 12 - "},
{ id:121, pId:12, name:" 121"},
{ id:122, pId:12, name:" 122"},
{ id:123, pId:12, name:" 123"},
{ id:124, pId:12, name:" 124"},
{ id:13, pId:1, name:" 13 - "},
{ id:2, pId:0, name:" 2 - "},
{ id:21, pId:2, name:" 21 - "},
{ id:211, pId:21, name:" 211"},
{ id:212, pId:21, name:" 212"},
{ id:213, pId:21, name:" 213"},
{ id:214, pId:21, name:" 214"},
{ id:22, pId:2, name:" 22 - "},
{ id:221, pId:22, name:" 221"},
{ id:222, pId:22, name:" 222"},
{ id:223, pId:22, name:" 223"},
{ id:224, pId:22, name:" 224"},
{ id:23, pId:2, name:" 23 - "},
{ id:231, pId:23, name:" 231"},
{ id:232, pId:23, name:" 232"},
{ id:233, pId:23, name:" 233"},
{ id:234, pId:23, name:" 234"},
{ id:3, pId:0, name:" 3 - "}
];
3.ページに入ったときに読み込む
$(document).ready(function(){
$.fn.zTree.init($("#treeDemo"), setting, zNodes);
});
以上が最も簡単なztreeの実現方式である.
バックグラウンドからajaxでjsonデータを読み込みます.
var zNodes;
$(document).ready(function(){
$.ajax({
async : false,
cache:false,
type: 'POST',
dataType : 'json',
url: 'ajax/treeInfo',// action
error: function () {//
alert(' ');
},
success:function(data){ // 。
zNodes = data; // Json treeNodes
}
});
$.fn.zTree.init($("#treeDemo"), setting, zNodes);
});
上記の取得ノードデータ情報に比べて、ここではajaxによって実現され、得られたdataはjsonフォーマットである.
ページにはidがtreeDemoであればよいのに.
treeを実装した後にtreenodeのクリック時間が必要になる場合があります.APIを調べてみるとsettingにonclick時間があることがわかります.ここでは関数を書いて、onclickを実装するときにコールバックします.
次のように
function zTreeOnClick(event, treeId, treeNode) {
$("#echoActive").text(" :"+treeNode.name+"----"+" id :"+treeNode.id);
};
settingでコールバックを実現し、以下のようにする.
callback: { onClick: zTreeOnClick },
treenodeをクリックすると、idがechoActiveのdivにデータtextが自動的に埋め込まれます.