2015-10-05 71 views
0

下面是我如何设置我的jstree格:如何元数据从服务器JSON添加到jsTree和检索元数据

$("#jsTree").jstree({ 
    'core' : { 
    'data' : { 
     'url' : 'users/initialize-jstree', 
     'data' : function (node) { 
      return { 'id' : node.id }; 
     } 
    } 
    } 
}).bind("select_node.jstree", function (event, data) { 
    console.log(data); 
    console.log(data.node.text); 
    console.log(data.testTestOne); 

}); 

在JSON我从我的URL回来,我有像这样一个元数据对象:

{ 
    "id":3, 
    "text":"My Node Text", 
    "children":[], 
    "metadata": { 
     "testTestOne":"Test metadata 1", 
     "testTestTwo":"Test metadata 2" 
    } 
} 

但我似乎无法检索.bind()中的元数据。

更具体地说,其他SO Q & A的不作为data.rslt工作总是undefined出于某种原因,

是不是有什么毛病我怎么提供它的JSON从服务器,或如何我设置jstree?

console.log(data.node.original.metadata); 

不过,我会建议使用data,而不是在你的回应metadata

{ 
    "id":3, 
    "text":"My Node Text", 
    "children":[], 
    "data": { 
     "testTestOne":"Test metadata 1", 
     "testTestTwo":"Test metadata 2" 
    } 
} 

然后你可以使用获得自定义数据:

回答

1

可以使用轻松获得metadata关键

console.log(data.node.data); 

通知没有original密钥,这是没有记录,可能会被删除,但data记录和留在这里 - 所以这是一个更安全的地方来存储您的数据。

+0

'console.log(data.node.original.metadata);'evaluate?无论我在哪里放置它,我都会将'node'设为'undefined' – mmcrae

+0

我也尝试过,在页面加载后,访问jsTree层次结构中的特定节点 - 例如使用$('#1_anchor')'查找类似的领域,但无法找到它们 – mmcrae