AngularJS过滤器在树中有n深度

时间:2016-03-20 21:04:24

标签: angularjs filter tree

我想对此question做同样的事情 对于 n 深度的数组。我有与id,name和parent_id(不是类型)相同的json。我尝试使用ng-template,但它对我不起作用。

我怎么能实现这个目标?

1 个答案:

答案 0 :(得分:1)

我确认您无法使用question中提供的树解决方案 所以这里是使用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>
控制器中的

$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
}

这是工作小提琴的链接:

http://jsfiddle.net/ymb9konk/