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. java随机数生成的原理

    一.在j2se里我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,我们可以把他乘以一定的数,比如说乘以100,他就是个100以内的随机,这个在 ...

  2. 【微信开发】PHP中奖概率经典算法实例

    $arr=array("50","30","20"); //这里简单列出三个数 $pro = array_sum($arr); // 概率数 ...

  3. Netd学习笔记

    service netd /system/bin/netd     class main     socket netd stream 0660 root system     socket dnsp ...

  4. java 基础知识三 java变量

    java  基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...

  5. Golang分布式爬虫:抓取煎蛋文章|Redis/Mysql|56,961 篇文章

    --- layout: post title: "Golang分布式爬虫:抓取煎蛋文章" date: 2017-04-15 author: hunterhug categories ...

  6. Jquery对raido的一些操作方法

    raido 单选组radio:   $("input[type=radio][checked]").val(); 获  取一组radio被选中项的值 var item = $('i ...

  7. 解决Tomcat: Can't load IA 32-bit .dll on a AMD 64-bit platform 问题

    错误如下: java.lang.UnsatisfiedLinkError: E:\Program Files\MyEclipse 10\apache-tomcat-7.0.23\bin\tcnativ ...

  8. Jax-ws 开发webService ,并使用spring注入service类

    由于使用myeclipse自动生成的Delegate,所以在使用service实现层的时候,默认创建的时候都是使用new的方法: 这样就导致每一次请求过来都得new一个新的:如果service有注入其 ...

  9. 每天一个linux命令(63):Linux中zip压缩和unzip解压缩命令详解

    文章转自:http://www.jb51.net/LINUXjishu/105916.html 1.把/home目录下面的mydata目录压缩为mydata.zipzip -r mydata.zip ...

  10. Java--定时器问题

    定时器问题 定时器属于基本的基础组件,不管是用户空间的程序开发,还是内核空间的程序开发,很多时候都需要有定时器作为基础组件的支持.一个定时器的实现需要具备以下四种基本行为:添加定时器.取消定时器.定时 ...