jsTree与Json-Data,没有获得元数据

时间:2013-02-18 14:50:15

标签: json jstree oracle-apex

我读了很多关于jsTree / Json / metadat的建议,但我找不到一个有效的解决方案。如果单击某个节点,我想获取元数据(例如id)。

我的Json数据:

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

创建树的第二个JS函数,应该得到点击的id(ajax调用和一些oracle顶点的东西)

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);


        });

    }
  });
}

第3个id应该是的对象(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。所以我觉得元数据部分的东西很乱,但我无法弄清楚错误在哪里。

提前致谢 马里奥

1 个答案:

答案 0 :(得分:4)

最后我跟踪了我的错误。如果您可以在上面的json代码中看到:

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

metadataobject(?)在attr的数据对象中,所有在线验证都显示我的jason代码有效。但metadatas正确的位置是在数据之后:

[
  {
    "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,请将attr-object作为数据对象,如:

[
  {
    "attr":{
      "id":"1000000000000000021"
    },
    "data":{
      "title":"TEST",
      "icon":"/i/small_folder.gif",
      "attr":{
        "id":"1000000000000000021"
      }
    },
    "metadata":{
      "id":"1000000000000000021"
    }
  }
]
很快就会 马里奥