Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取最后一个子元素或孙子元素的父元素?_Javascript_Angularjs_Angularjs Directive - Fatal编程技术网

Javascript 获取最后一个子元素或孙子元素的父元素?

Javascript 获取最后一个子元素或孙子元素的父元素?,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我正在使用angularjs,我的服务有这个响应,它以树的形式出现,我将数据表示到angularjs树。此对象有4个主子对象,名称和id。但这些子对象及其子对象也有子对象,名称和id。我想要的是,无论单击哪个子对象,我始终希望访问主根父对象名称的值,即“node1”“node2”“node3”作为名称,以便我知道什么是我的主父对象以及im单击下的父对象 $scope.loadOrganizationTree=函数(){ userManagementFactory.getOrganizationT

我正在使用angularjs,我的服务有这个响应,它以树的形式出现,我将数据表示到angularjs树。此对象有4个主子对象,名称和id。但这些子对象及其子对象也有子对象,名称和id。我想要的是,无论单击哪个子对象,我始终希望访问主根父对象名称的值,即“node1”“node2”“node3”作为名称,以便我知道什么是我的主父对象以及im单击下的父对象

$scope.loadOrganizationTree=函数(){
userManagementFactory.getOrganizationTree()
.成功(功能(数据、状态){
if(JSON.stringify(data.statusType).indexOf(“success”)>-1){
$scope.dataForTheTree=data.statusMsg;
}
}否则{
$scope.setResponseMsgs(数据、状态);
}
}).错误(功能(数据、状态){
$scope.userErrorMsg=data.statusMsg;
$scope.msg=true;
});

{{node.name}
[
{
“id”:1,
“名称”:“节点1”,
“儿童”:[
{
“id”:11,
“名称”:“节点1.1”,
“儿童”:[
{
“id”:111,
“名称”:“节点1.1.1”,
“儿童”:[]
}
]
},
{
“id”:12,
“名称”:“节点1.2”,
“儿童”:[]
}
]
},
{
“id”:2,
“名称”:“节点2”,
“儿童”:[
{
“id”:21,
“名称”:“节点2.1”,
“节点”:[]
},
{
“id”:22,
“名称”:“节点2.2”,
“节点”:[]
}
]
},
{
“id”:3,
“名称”:“节点3”,
“儿童”:[
{
“id”:31,
“名称”:“节点3.1”,
“儿童”:[]
}
]
}
]
到目前为止,我已经尝试使用$parentnode访问,但对我来说不起作用。请告诉我解决办法。
提前感谢。

加载您填写的数据后,$scope.dataForTheTree。然后可以遍历树并设置每个节点的根。 我使用var dataForTheTree和示例数据为您编写了这个代码。 运行以下命令后,每个节点都有一个根属性集及其根节点

var setRoot = function(elementWithChildren, root) {
    elementWithChildren.root = root;
    if (elementWithChildren.children != null) {
        angular.forEach(elementWithChildren.children, function(child) { setRoot(child, root); });
    }
};
angular.forEach(dataForTheTree, function(rootNode) { setRoot(rootNode, rootNode); });
我们获取树的每个节点并调用setRoot()函数。然后为每个子级调用setRoot函数。
递归。

已经使用了
.success
.error
方法。这是一个旧代码。这甚至都不是问题。谢谢你的更新:)@Viraj:不是你想要的答案吗?你最后是怎么解决你的问题的?嗨,彼得!很抱歉反应太晚。这对我来说很好。