AngularJS 嵌套列表

controller

 .controller('addQaCtrl', function ($scope) {
    $scope.buttonStatus = function (item) {
      if (item.items.length) {
        return  item.expanded ? 'expand_less' : 'expand_more';
      } else {
        return 'block';
      }
    };
    $scope.items = [{
      title: '1',
      items: [{title: '1.1', items:[{title: '1.1.1', items:[]}]}]
    }, {
      title: '2',
      items: [{title: '2.1', items: []}]
    }, {
      title: '3',
      items: []
    }];
    $scope.toggleItems = function(item) {
      if (item.items) {
        if (Array.isArray(item.items)) {
          item.expanded = !item.expanded;
        }
      } else {
        item.expanded = true;
      }
    };
  });

HTML

<script type="text/ng-template" id="treeview.html">
  <md-list-item>
    <md-button class="material-icons" ng-click="toggleItems(item)" ng-disabled="!item.items.length">
    {{buttonStatus(item)}}
    </md-button>
    <p>{{ item.title }}</p>
  </md-list-item>
  <md-list flex ng-if="item.items.length" ng-show="item.expanded" style="padding: 20px">
    <div ng-repeat="item in item.items" ng-include="'treeview.html'"></div>
  </md-list>
</script>
<md-content flex class="md-padding">
  <md-list>
    <div ng-repeat="item in items" ng-include="'treeview.html'"></div>
  </md-list>
</md-content>

参考
http://codepen.io/dunmaksim/pen/GJLogo
使用了递归模板技术,实在是太强了
缩进问题用一行css也也解决了

style="padding: 20px"

看来CSS确实很重要,要开始学了
这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值