2015-09-03 2 views
4

У меня ситуация, которая очень похожа на этот ответ на вопрос здесь:Угловая рекурсивный нг-включают, сохраняя при этом глубину рекурсии

AngularJS ng-include with nested hierarchy

У меня есть некоторые данные в формате

$scope.data = { 
text: "blah", 
comments: 
[ 
    { 
    text: ["blahL11", "blahL12", "blahL13"], 
    comments: [ 
     { 
     text: ["blahL111", "blahL112", "blahL113"] 
     }, 
     { 
     text: ["blahR111", "blahR112", "blahR113"] 
     } 
    ] 
    }, 
    { 
    text: ["blahR11", "blahR12", "blahR13"] 
    } 
] 

};

И я отображали его рекурсивным нг-включают как это:

<ul> 
    <li>{{data.text}}</li> 
    <li ng-repeat="item in data.comments" ng-include="'tree'"></li> 
</ul> 

<script type="text/ng-template" id="tree"> 
    <ul> 
    <li ng-repeat="text in item.text">{{text}}</li> 
    <li ng-repeat="item in item.comments" ng-include="'tree'"></li> 
    </ul> 
</script> 

http://plnkr.co/edit/8swLos2V6QRz6ct6GDGb?p=info

Однако, я хотел бы, чтобы каким-то образом отслеживать глубину рекурсии, а также. Так что вместо того, чтобы просто отображения:

-blah 
    -blahL11 
    -blahL12 
    -blahL13 
      -blahL111 

Он может отображать

-1. blah  
    -2. blahL11 
    -2. blahL12 
    -2. blahL13 
     -3. blahL111 

Без меня изменения структуры данных (как глубина только действительно для отображения?). Могу ли я вставить переменную в ng-include, есть ли какой-то рекурсивный индекс $, который я могу использовать?

+0

посмотреть на https://github.com/dotJEM/angular-tree, он это встроенный и иначе работает отчислять как рекурсивные нг-включают в себя. – Jens

ответ

3

Вы можете сделать это, используя ng-init. Это будет присвоено значение новой области при ее создании, что вы можете сделать, указав значение в старой области и увеличив ее.

plnkr demo

<li ng-repeat="item in item.comments" ng-include="'tree'" ng-init="depth = depth + 1"></li> 
+0

Это потрясающе! Я пытался использовать onload, не думал о ng-init. Благодаря! – RamblerToning

Смежные вопросы