html

ul.tree-show
sub-transclude-set
ng-transclude
li.parent(ng-repeat='(key,item) in treeData',ng-include="'app/dist/directive/treeview/subtree.html'")
.title(ng-class='{"btn btn-sm btn-danger":returnData==item}')
span(ng-if="item.nodes&&!item.hide" ng-click="item.hide=!item.hide")
i.glyphicon.glyphicon-collapse-down
span(ng-if="item.nodes&&item.hide" ng-click="item.hide=!item.hide")
i.glyphicon.glyphicon-expand
span(ng-class="{'subli':!item.children}",ng-click="selectFn(item)")
input(type="checkbox" ng-model="item.check" ng-if="type==='check'&&(!item.commission)")
input(type="checkbox" disabled="disabled" ng-if="type==='check'&&item.commission")
span.name(ng-bind='item[[config.text]]')
span.name(ng-bind='item[[config.commoty]]' ng-if="item.supplier_id == config.suppid||config.suppid == undefined" ng-class="{'gray':config.commoty&&(item.commission)}")
span(ng-include="'dist/tree-transclude.html'")
ul(ng-show="!item.hide")
li(ng-repeat='(key,item) in item.nodes|newObj', ng-include="'app/dist/directive/treeview/subtree.html'")

  

js

/**
* lt-tree Module
*
* Description
*/
angular.module('app').directive('treeView',['$templateCache', function($templateCache) {
return { 
scope: {              
treeData: '=',
returnData: '=',
type: "@",                        
config: "=", 
fn:"="                       
},
restrict: 'EA',
templateUrl: 'app/dist/directive/treeview/treeview.html',
controller: 'treeViewCtrl',
transclude:true,
link: function(scope, iElement, iAttrs) {
var config=scope.config;
if(!config.text) config.text='text';
var subTransclude=iElement.find('sub-transclude-set');
subTransclude.remove();
var subHtml=subTransclude&&subTransclude[0].innerHTML;
var appendHtml=angular.element(subHtml)[0].innerHTML;
// console.log(appendHtml)
$templateCache.put('dist/tree-transclude.html',appendHtml);
}
};
}]).filter('newObj', function() {
return function(obj) {
return obj;
};
}).controller('treeViewCtrl', ['$scope', function($scope) { var type=$scope.type;
var checkTree=function(tree,check){
tree.check=check;
if(tree.nodes&&tree.nodes[0]){
tree.nodes.forEach(function(child){
checkTree(child,check);
});
}
};
var selectTree=function(tree){
$scope.returnData=tree;
};
$scope.selectFn=function(tree){
if(type==='check'){
checkTree(tree,!tree.check);
}else if(type==='select'){
selectTree(tree);
}
};
}]);

  

页面样式

angular.js封装的树形指令的更多相关文章

  1. angular.js封装的文件上传指令

    今天把最近用到的东西整理一下,直接上代码,需要申请犀牛存储图片,文件 1.html div div img.img-thumbnail.center-block(ng-src="{{ltUp ...

  2. [学习笔记] 七步从Angular.JS菜鸟到专家(3):数据绑定和AJAX [转]

    这是"AngularJS - 七步从菜鸟到专家"系列的第三篇. 在第一篇,我们展示了如何开始搭建一个AngularaJS应用.第二篇我们讨论了scope和 $scope 的功能. 通过这整个系列的教程 ...

  3. Angular JS 基础应用--第一篇

      前  言          Android应用开发中,有一些功能虽然能够使用原生JS来实现,但是会比较的复杂,因此一些相应的框架应运而生了.框架相对于原生JS而言,从主观上来说,最大的改变就是代码 ...

  4. angular.js ng-repeat动态插入删除dom节点

    既然上面提到 angular.js 下无需用户直接操作dom ,而是在编译间断 dom 与 控制层model 实现了双向绑定,一方做出改变,另一方就会立即改变,那问题来了,我想插入一个文本框和按钮,并 ...

  5. angular.js 动态插入删除dom节点

    angular.js 是新一代web开发框架,它轻松在web前端实现了MVC模式,相比 jquery 模式,这种新玩意竟然不需要开发者直接去操作dom . 作为前端开发而不去操作dom ,这简直是一个 ...

  6. Angular JS学习之指令

    1.Angular JS通过称为指令的新属性来扩展HTML:通过内置的指令来为应用添加功能: 2.AngularJS指令:AngularJS指令是扩展的HTML属性,带有前缀ng-: **ng-app ...

  7. Angular JS 学习笔记(自定义服务:factory,Promise 模式异步请求查询:$http,过滤器用法filter,指令:directive)

    刚学没多久,作了一个小项目APP,微信企业号开发与微信服务号的开发,使用的是AngularJS开发,目前项目1.0版本已经完结,但是项目纯粹为了赶工,并没有发挥AngularJS的最大作用,这几天项目 ...

  8. 推荐 15 个 Angular.js 应用扩展指令(参考应用)

    几天前我们看到Angular 1.4.0发布了-一个以社团为驱动的发布版本涵盖了400多个GitHub的提交,增加了对特性的提升,比如动画,以及可用性. 官方新闻发布稿 覆盖了绝大部分,这同样值得放于 ...

  9. angular js 指令的数据传递 及作用域数据绑定

    <div my-directive my-url="http://google.com" my-link-text="Click me to go to Googl ...

随机推荐

  1. 腾讯云数据库团队:PostgreSQL TOAST技术理解

    作者介绍:胡彬 腾讯云高级工程师 TOAST是"The Oversized-Attribute Storage Technique"的缩写,主要用于存储一个大字段的值.要理解TOA ...

  2. Nginx+Tomcat动静分离脚本

    #!/bin/bashsetenforce 0systemctl stop firewalldtar -zxvf nginx-1.8.0.tar.gz -C /usr/src/ cd /usr/src ...

  3. Win10专业版下图片拖到PS无法打开的解决技巧

    PS这个软件是用户最常用的软件之一,其强大的图形处理能力毋庸置疑.有用户表示在Win10专业版系统中使用PS发现图片不能直接拖动到PS中打开,这个问题本身不是特别大的问题,但这一小小的毛病会打破用户习 ...

  4. (iOS)开发中收集的小方法

    1.颜色转变成图片 - (UIImage *)createImageWithColor:(UIColor *)color {     CGRect rect = CGRectMake(0.0f, 0. ...

  5. package(1):tm

    tm包是R语言中为文本挖掘提供综合性处理的package,进行操作前载入tm包,vignette命令可以让你得到相关的文档说明.使用默认安装的R平台是不带tm  package的,在安装的过程中,它会 ...

  6. Xcode8.3 添加iOS10.3以下旧版本模拟器

    问题起源 由于手边项目需要适配到iOS7, 但是手边的测试机都被更新到最新版本,所以有些潜在的bug,更不发现不了.最近就是有个用户提出一个bug,而且是致命的,app直接闪退.app闪退,最常见的无 ...

  7. node-webkit学习之【无边框窗口用JS实现拖动改变大小等】

    效果如下图 原生的如下图(原生的用在自己的app上面太丑了,并且还带边框,所以重写了左上角的三个功能键) 1.首先了解一下nw底下的package.json 文件 { "name" ...

  8. Java 中字两个字符串判断是否相等(转载)

    java中判断字符串是否相等有两种方法:1.用"=="运算符,该运算符表示指向字符串的引用是否相同,比如: String a="abc";String b=&q ...

  9. DevExpress ChartControl 设置它的标题

    private void SetHZTitle(ref ChartControl chartControl, string HTitle) { chartControl.Titles.Clear(); ...

  10. Java Comparator的范型类型推导问题

    问题 在项目中,有一处地方需要对日期区间进行排序 我需要以日期区间的开始日为第一优先级,结束日为第二优先级进行排序 代码 我当时写的代码如下: List<Pair<LocalDate, L ...