2016-03-20 6 views
0

Ich wollte das gleiche von diesem question für ein Array mit n Tiefe tun. Ich habe das gleiche json mit ID, Name und parent_id (nicht Typ). Ich habe es mit ng-template versucht, aber es funktioniert nicht für mich.AngularJS Filter im Baum mit n Tiefe

Wie könnte ich das erreichen?

Antwort

1

Ich erkenne Sie waren nicht in der Lage, den Baum Lösung in question zu nutzen, so ist hier eine Geige des Baumes der Nutzer AngularJS

<ul> 
    <!--only get top level nodes where parent_id=0 though filtering --> 
    <li ng-repeat="user in users | filter:{parent_id:0}:true" ng-include="'userTree'"></li> 
</ul> 
<!--inside template filter to only get children of this user--> 
<script type="text/ng-template" id="userTree"> 
    {{user.name}} 

    <ul ng-if="has_children(user)" style="margin-left:10px"> 

     <li ng-repeat="child in users | filter:{parent_id:user.id}:true " ng-include="'userTree'" ng-init="user=child"> 
     </li> 
    </ul> 
</script> 

in Controller:

$scope.has_children = function(user) { 
    for (i = 0; i < $scope.users.length; i++) { 
     if (user.id == $scope.users[i].parent_id) { 
      return true 
     } 
    } 
    return false 
} 

Dies ist die Verbindung für arbeitende Geige:

http://jsfiddle.net/ymb9konk/

+0

Das ist es. Ich denke mein Problem war, dass ich immer ng-init vergessen habe. – Light1988

+0

Ich habe jsfiddle aktualisiert. – Light1988