0

jsTree / Json / metadatに関する多くの提案を読みましたが、有効な解決策が見つかりません。ノードがクリックされた場合にメタデータ(IDなど)を取得したい。

最初の私のJsonデータ:

[
  {
    "data":{
      "title":"TEST",
      "icon":"/i/small_folder.gif",
      "attr":{
        "id":"1000000000000000021"
      },
      "metadata":{
        "id":"1000000000000000021"
      }
    }
  }
]

ツリーを作成し、クリックされたIDを取得する必要がある2番目のJS関数(ajax呼び出しといくつかのoracle apexのもの)

function populateTree(pRegionId) {
  console.log('---Js Tree---');
  $.ajax({
    type : 'POST',
    async : true,
    url : 'wwv_flow.show',
    data : {
      "p_request" : 'APPLICATION_PROCESS=GET_TREE',
      "p_flow_id" : $v('pFlowId'), // app id
      "p_flow_step_id" : $v('pFlowStepId'), // page id
      "p_instance" : $v('pInstance'), // session id

    },
    ggg : pRegionId,
    success : function (data) {
      console.log(data);

      var jsonobj = JSON.parse(data);
      apex.jQuery("#" + this.ggg).jstree({
       "themes" : {
          "theme" : "default",
          "dots" : false,
          "icons" : true
        },
        "json_data" : {
          "data" : [jsonobj]
        },
        "plugins" : ["themes","json_data", "ui"]
      //}).bind("select_node.jstree", function (e, data) { alert(data.rslt.obj.data("jstree").id); });
        }).bind("select_node.jstree", function (e, data) {
          console.log(data);


        });

    }
  });
}

IDが必要な3番目のオブジェクト(firebug domview):

  args [a#1000000000000000301.jstree-clicked #, true, Object { originalEvent=Event click,  type=  "click",  timeStamp=30977664,  mehr...}]

inst  Object { data={...}, get_settings=function(), _get_settings=function(), mehr...}

rlbk false

rslt Object { obj={...}, e={...}}
  e Object { originalEvent=Event click, type="click", timeStamp=30977664, mehr...}  
  obj   jQuery(li.jstree-closed)

ご覧のとおり、IDはありません。ですから、メタデータ部分の何かが厄介だと思いますが、どこに間違いがあるのか​​わかりません。

よろしくお願いしますマリオ

4

1 に答える 1

4

最後に、私は間違いを追跡しました。上記の json コードを見ると、次のようになります。

[
  {
    "data":{
      "title":"TEST",
      "icon":"/i/small_folder.gif",
      "attr":{
        "id":"1000000000000000021"
      },
      "metadata":{
        "id":"1000000000000000021"
      }
    }
  }
]

メタデータ オブジェクト (?) は attr のようなデータ オブジェクト内にあり、すべてのオンライン検証は、私のジェイソン コードが有効であることを示しています。しかし、メタデータの適切な場所はデータの後です。

[
  {
    "data":{
      "title":"TEST",
      "icon":"/i/small_folder.gif",
      "attr":{
        "id":"1000000000000000021"
      }
    },
    "metadata":{
      "id":"1000000000000000021"
    }
  }
]

そして今、次のjsでIDを取得します

.bind("select_node.jstree", function (e, data) {
          console.log(data.rslt.obj.data("id"));         
        });

そして、li タグ内に id が必要な場合は、次のように data-object の代わりに attr-object を配置します。

[
  {
    "attr":{
      "id":"1000000000000000021"
    },
    "data":{
      "title":"TEST",
      "icon":"/i/small_folder.gif",
      "attr":{
        "id":"1000000000000000021"
      }
    },
    "metadata":{
      "id":"1000000000000000021"
    }
  }
]

cu すぐにマリオ

于 2013-02-19T08:38:39.553 に答える