整理文档,搜刮出一个Angular directive递归实现目录树结构代码实例代码,稍微整理精简一下做下分享。

效果图:
重点:
1. 整棵目录树的实现,通过嵌套完成,主要在于对treeItem.html的递归使用
<script type="text/ng-template" id="treeView.html">
<ul>
<li ng-repeat="item in treeData.children" ng-include="'treeItem.html'"></li>
</ul>
</script>
<script type="text/ng-template" id="treeItem.html">
<span class="color-indictor" ng-class="{'leaf-node': isLeaf(item), 'expand-node': !isLeaf(item) && item.isExpand, 'unexpand-node': !isLeaf(item) && !item.isExpand}" ng-click="toggleExpandStatus(item)"></span>
<span>{{item.name}}</span>
<ul ng-if="!isLeaf(item)" ng-show="item.isExpand">
<li ng-repeat="item in item.children" ng-include="'treeItem.html'"></li>
</ul>
</script>
2. 点击展开/关闭目录树
通过ng-show对item.expand进行判断,点击item时切换其expand参数,完成目录树的打开与关闭
3. 源码
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.9/angular.js"></script>
<script>
angular.module("treeApp", [])
.controller("treeController", function($scope){
$scope.jsonData = {
name: 'menu',
children: [{
name: 'A',
children: [{
name: 'A.1',
children: [{
name: 'A.1.1',
children: []
}]
},{
name: 'A.2',
children: [{
name: 'A.2.1',
children: [{
name: 'A.2.1.1',
children: []
}]
},{
name: 'A.2.2',
children: []
}]
}]
},{
name: 'B',
children: [{
name: 'B.1',
children: []
},{
name: 'B.2',
children: []
}]
},{
name: 'C',
children: []
}]
};
}).directive('treeView', function(){
return {
restrict: 'E',
templateUrl: 'treeView.html',
scope: {
treeData: '='
},
controller: function($scope){
$scope.isLeaf = function(item){
return !item.children || !item.children.length;
};
$scope.toggleExpandStatus = function(item){
item.isExpand = !item.isExpand;
};
}
};
});
</script>
<style>
ul{
list-style: none;
}
.color-indictor{
display: inline-block;
width: 20px;
height: 20px;
cursor: pointer;
}
.color-indictor.leaf-node{
background: red;
}
.color-indictor.unexpand-node{
background: green;
}
.color-indictor.expand-node{
background-color: yellow;
}
</style>
<body ng-app="treeApp" ng-controller="treeController">
<div>
<p>Introduce: Click green block expand the menu tree</p>
<p>Red: Leaf node, can not click</p>
<p>Green: Unexpand node, click to expand menu</p>
<p>Yellow: Expanded node, click to unexpand menu</p>
</div>
<tree-view tree-data="jsonData"></tree-view>
</body>
<script type="text/ng-template" id="treeView.html">
<ul>
<li ng-repeat="item in treeData.children" ng-include="'treeItem.html'"></li>
</ul>
</script>
<script type="text/ng-template" id="treeItem.html">
<span class="color-indictor" ng-class="{'leaf-node': isLeaf(item), 'expand-node': !isLeaf(item) && item.isExpand, 'unexpand-node': !isLeaf(item) && !item.isExpand}" ng-click="toggleExpandStatus(item)"></span>
<span>{{item.name}}</span>
<ul ng-if="!isLeaf(item)" ng-show="item.isExpand">
<li ng-repeat="item in item.children" ng-include="'treeItem.html'"></li>
</ul>
</script>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# angularjs
# 目录树
# Angular
# directive递归目录
# angular无限递归树
# Angular之指令Directive用法详解
# angularJS+requireJS实现controller及directive的按需加载示例
# 详解angular2采用自定义指令(Directive)方式加载jquery插件
# angularjs使用directive实现分页组件的示例
# 详解angularJs中自定义directive的数据交互
# AngularJS中directive指令使用之事件绑定与指令交互用法示例
# AngularJs directive详解及示例代码
# 学习AngularJs:Directive指令用法(完整版)
# 递归
# 大家多多
# 文档
# span
# include
# children
# leaf
# indictor
# color
# li
# ul
# gt
# treeData
# item
# repeat
# show
# toggleExpandStatus
# click
# src
# expand
相关文章:
七夕网站制作视频,七夕大促活动怎么报名?
寿县云建站:智能SEO优化与多行业模板快速上线指南
网站网页制作专业公司,怎样制作自己的网页?
C++如何使用std::optional?(处理可选值)
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
学校为何禁止电信移动建设网站?
潮流网站制作头像软件下载,适合母子的网名有哪些?
建站VPS能否同时实现高效与安全翻墙?
网站制作价目表怎么做,珍爱网婚介费用多少?
网站企业制作流程,用什么语言做企业网站比较好?
红河网站制作公司,红河事业单位身份证如何上传?
常州自助建站费用包含哪些项目?
建站之星ASP如何实现CMS高效搭建与安全管理?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
,南京靠谱的征婚网站?
网站制作模板下载什么软件,ppt模板免费下载网站?
如何快速生成橙子建站落地页链接?
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何零基础开发自助建站系统?完整教程解析
名字制作网站免费,所有小说网站的名字?
制作营销网站公司,淘特是干什么用的?
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
如何在万网自助建站中设置域名及备案?
高端云建站费用究竟需要多少预算?
如何通过VPS建站实现广告与增值服务盈利?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
如何使用Golang安装API文档生成工具_快速生成接口文档
建站主机功能解析:服务器选择与快速搭建指南
如何选择美橙互联多站合一建站方案?
如何通过远程VPS快速搭建个人网站?
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
建站之星24小时客服电话如何获取?
如何快速配置高效服务器建站软件?
b2c电商网站制作流程,b2c水平综合的电商平台?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
seo网站制作优化,网站SEO优化步骤有哪些?
建站之星后台密码遗忘如何找回?
北京网站制作网页,网站升级改版需要多久?
如何快速选择适合个人网站的云服务器配置?
打鱼网站制作软件,波克捕鱼官方号怎么注册?
Python文件管理规范_工程实践说明【指导】
如何高效完成独享虚拟主机建站?
公司网站制作价格怎么算,公司办个官网需要多少钱?
建站上市公司网站建设方案与SEO优化服务定制指南
如何用花生壳三步快速搭建专属网站?
如何高效完成自助建站业务培训?
建站主机无法访问?如何排查域名与服务器问题
宁波免费建站如何选择可靠模板与平台?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
*请认真填写需求信息,我们会在24小时内与您取得联系。