整理文档,搜刮出一个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优化技巧全解析
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
如何做静态网页,sublimetext3.0制作静态网页?
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
b2c电商网站制作流程,b2c水平综合的电商平台?
C++用Dijkstra(迪杰斯特拉)算法求最短路径
如何快速打造个性化非模板自助建站?
如何在阿里云虚拟服务器快速搭建网站?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
C#如何序列化对象为XML XmlSerializer用法
Python lxml的etree和ElementTree有什么区别
在线教育网站制作平台,山西立德教育官网?
如何通过可视化优化提升建站效果?
制作国外网站的软件,国外有哪些比较优质的网站推荐?
定制建站模板如何实现SEO优化与智能系统配置?18字教程
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
如何快速选择适合个人网站的云服务器配置?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
如何通过免费商城建站系统源码自定义网站主题与功能?
Swift中swift中的switch 语句
如何在IIS7中新建站点?详细步骤解析
建站ABC备案流程中有哪些关键注意事项?
建站之星如何快速生成多端适配网站?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
如何有效防御Web建站篡改攻击?
平台云上自助建站如何快速打造专业网站?
如何快速生成橙子建站落地页链接?
如何通过主机屋免费建站教程十分钟搭建网站?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
如何确保FTP站点访问权限与数据传输安全?
创业网站制作流程,创业网站可靠吗?
如何在万网开始建站?分步指南解析
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
个人摄影网站制作流程,摄影爱好者都去什么网站?
建站之星后台密码遗忘如何找回?
如何在阿里云购买域名并搭建网站?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
免费网站制作appp,免费制作app哪个平台好?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
七夕网站制作视频,七夕大促活动怎么报名?
如何用景安虚拟主机手机版绑定域名建站?
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
建站之星如何实现网站加密操作?
*请认真填写需求信息,我们会在24小时内与您取得联系。