整理文档,搜刮出一个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
相关文章:
网站制作网站,深圳做网站哪家比较好?
如何通过西部建站助手安装IIS服务器?
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
电脑免费海报制作网站推荐,招聘海报哪个网站多?
如何用5美元大硬盘VPS安全高效搭建个人网站?
表情包在线制作网站免费,表情包怎么弄?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
如何通过多用户协作模板快速搭建高效企业网站?
建站之星会员如何解锁更多建站功能?
电商网站制作公司有哪些,1688网是什么意思?
如何用低价快速搭建高质量网站?
开封网站制作公司,网络用语开封是什么意思?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
网站制作服务平台,有什么网站可以发布本地服务信息?
如何通过.red域名打造高辨识度品牌网站?
建站之星北京办公室:智能建站系统与小程序生成方案解析
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
高端建站如何打造兼具美学与转化的品牌官网?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
如何在Tomcat中配置并部署网站项目?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
网页设计与网站制作内容,怎样注册网站?
如何用PHP快速搭建高效网站?分步指南
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
小建面朝正北,A点实际方位是否存在偏差?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
香港服务器租用每月最低只需15元?
建站主机选购指南:核心配置优化与品牌推荐方案
再谈Python中的字符串与字符编码(推荐)
建站之星图片链接生成指南:自助建站与智能设计教程
建站主机是否等同于虚拟主机?
山东网站制作公司有哪些,山东大源集团官网?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
怀化网站制作公司,怀化新生儿上户网上办理流程?
如何通过老薛主机一键快速建站?
广德云建站网站建设方案与建站流程优化指南
如何在阿里云完成域名注册与建站?
网站制作的步骤包括,正确网址格式怎么写?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
建站之星如何快速解决建站难题?
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
如何通过虚拟主机快速完成网站搭建?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
中山网站制作网页,中山新生登记系统登记流程?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
建站之星如何防范黑客攻击与数据泄露?
重庆网站制作公司哪家好,重庆中考招生办官方网站?
如何在Golang中引入测试模块_Golang测试包导入与使用实践
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。