Dom 通过angularjs中的$scope获取html属性
好的,我在AngularJS中使用ng include和ng repeat创建一个递归列表,如下所示:Dom 通过angularjs中的$scope获取html属性,dom,recursion,angularjs,ng-repeat,Dom,Recursion,Angularjs,Ng Repeat,好的,我在AngularJS中使用ng include和ng repeat创建一个递归列表,如下所示: <div id="wrapper"> <div id="text" ng-click="DivClick()"> <ul> <li id="{{$index}}" ng-repeat="data in layer" ng-include="'recursion.html'"></li> </ul&
<div id="wrapper">
<div id="text" ng-click="DivClick()">
<ul>
<li id="{{$index}}" ng-repeat="data in layer" ng-include="'recursion.html'"></li>
</ul>
</div>
0
1
1-0
1-1
1-1-0
1-2
1-3
2
2-0
因此,每个新的我所知道的是作用域。layer[]及其层子体包含一个字段,该字段将保存
$scope.label
之前,您可以使用递归循环分支并添加id
属性的函数对其进行循环
var data = [{
name: 'foo',
children: [{
name: 'foo child',
children: [{
name: 'foo child grandchild'
}, {
name: 'foo child grandchild2'
}]
}, {
name: 'foo child2'
}]
}, {
name: 'bar'
}]
function createID(arr, parentID) {
for (var i = 0; i < arr.length; i++) {
var id = (i + 1).toString();
var thisID = parentID ? parentID + '-' + id : id;
arr[i].id = thisID;
if (arr[i].children) {
createID(arr[i].children, thisID)
}
}
}
createID(data, null)
var数据=[{
名称:“foo”,
儿童:[{
姓名:'foo child',
儿童:[{
姓名:“富儿孙女”
}, {
姓名:“富儿孙2”
}]
}, {
姓名:'foo child2'
}]
}, {
名称:“酒吧”
}]
函数createID(arr,parentID){
对于(变量i=0;i
演示我认为您想要做的是从父元素中获取
$index
您可以使用$parent.$index
-或者在本例中,它可能是$parent.$parent.$index
,因为您正在使用ng repeat->ng include->ng repeat
有关类似情况的更多信息,请参见此答案:
递归遍历
层
数组的所有分支,为每个元素对象添加一个ID属性,并在标记中输出带有角度扩展的新属性,这相当简单。提供层
数据的示例,但问题是,这只适用于一个级别,这意味着如果我需要获得孙子的id,例如2-3-1,我将获得3-1,因为我只接触第一个父级。这是我最初的想法,但这意味着我将为每个递归级别提供一个额外字段,并扩展我的数据库,或者是一个只存储ID的全新结构,当我的json结构加载时,我必须初始化ID,这会很复杂。无法简单地访问父作用域中id
值是什么?例如,在LI标记的父迭代中,每个LI都有自己的id,我需要这些id。如果不是这样,我如何创建自己的函数来调用{{}方括号?我以为这是一项新服务,但我不能很好地掌握它。。。我明天再做。不清楚你在说什么。它在你的数据中吗?如果是,请提供数据样本。你在问题中暗示不存在ID。我提供的解决方案有什么问题?属性可用于{{item.id}
var data = [{
name: 'foo',
children: [{
name: 'foo child',
children: [{
name: 'foo child grandchild'
}, {
name: 'foo child grandchild2'
}]
}, {
name: 'foo child2'
}]
}, {
name: 'bar'
}]
function createID(arr, parentID) {
for (var i = 0; i < arr.length; i++) {
var id = (i + 1).toString();
var thisID = parentID ? parentID + '-' + id : id;
arr[i].id = thisID;
if (arr[i].children) {
createID(arr[i].children, thisID)
}
}
}
createID(data, null)