- 浏览: 162223 次
- 性别:
- 来自: 重庆
博客专栏
-
Angularjs实战
浏览量:19145
文章分类
- 全部博客 (98)
- 工具 (2)
- 字符编码问题 (1)
- 微信开发调试工具 (2)
- java (10)
- spring (2)
- mybatis (2)
- spring boot (2)
- 其他 (1)
- spring ajax (1)
- jquery (4)
- 中间件 (3)
- oracle数据库 (2)
- oracle (1)
- 文件上传 (1)
- AngularJS (23)
- css (4)
- js (9)
- Iconfont (1)
- 个人 (1)
- WebLogic (4)
- maven (2)
- 转载 (1)
- File (2)
- webupload (4)
- tomcat (2)
- linux (2)
- Jersey (11)
- 脚本 (1)
- ftp (1)
- xdata (1)
- 钉钉 (1)
- 文档转换 (3)
- ionic (1)
- vue (2)
最新评论
-
masuweng:
java批量将多文件打包成zip格式 -
柳絮飞祭奠:
// 读取错误执行的返回流 是这个 B ...
java调用执行cmd指令启动weblogic -
109:
您好,我想知道在startServer怎么判断它是错误执行的流 ...
java调用执行cmd指令启动weblogic -
williamfan:
dataSourceConfig.getUrl()这个可以直接 ...
spring boot和mybatis入门
一般我们做web开发都会用到树,恰好ztree为我们提供了多种风格的树插件。
接下来就看看怎么用Angularjs的directive封装ztree
接下来就看看怎么用Angularjs的directive封装ztree
<!DOCTYPE html> <html ng-app="ceshiapp" ng-controller="ceshicontroller"> <head> <title>liuxu.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <link rel="stylesheet" href="../cstorage/plugins/zTreeStyle.css" type="text/css"></link> <link rel="stylesheet"href="../standard/plugins/bootstrap/css/bootstrap.css" type="text/css"></link> </head> <body> <zcheckboxtree id="tree" async="true" binding="/unit/user"datatype="json" text="Name" kind="get" ng-model="checked" ng-click="auth_treenode_onclick(checked)"></zcheckboxtree> <div> <h1>已选择</h1> [list] <li ng-repeat="item in user track by $index">{{item.Name}}</li> [/list] </div> </body> <script type="text/javascript" src="../standard/plugins/jquery/jquery.min.js"></script> <script type="text/javascript" src="../cstorage/plugins/ztree/js/jquery.ztree.core.min.js"></script> <script type="text/javascript" src="../standard/plugins/ztree/js/jquery.ztree.all.js"></script> <script type="text/javascript" src="../standard/plugins/angular/angular.js"></script> <script type="text/javascript"> var ceshiapp = angular.module("ceshiapp", []); //动态加载模板的指令 ceshiapp.directive('zcheckboxtree',function(){ var option = { restrict : 'E', require: '?ngModel', replace : true, transclude: true, template : "<ul class='ztree' ></ul> ", scope:true, link : function($scope, $element, $attrs, ngModel) { $scope.config={}; $scope.config.id = $attrs.id; // 控件id $scope.config.async = $attrs.async; // 是否异步加载,默认异步加载 $scope.config.binding = "/api/1.0/unit/user"; // 绑定数据的url $scope.config.kind = $attrs.kind; // 请求数据方式post get $scope.config.datatype = $attrs.datatype; //提交数据方式json $scope.config.text = $attrs.text; //提交数据方式json $scope.config.user = []; //选中用户信息 $scope.config.flag = true; //标志位 if ($scope.async == "true" || $scope.async == undefined) { var setting = { async : { enable : true, url : '/api/1.0/unit/user', autoParam : [ "id" ], type : 'get' }, check : { enable : true, chkStyle : "checkbox", chkboxType : { "Y" : "s", "N" : "ps" }, }, data : { simpleData : { enable : true, idKey : "id", // 指定节点属性名 pIdKey : "parentid", // 指定父节点属性名 rootPId : -1 }, key : { name : "Name" } }, callback : { onCheck : function(event, treeId, treeNode) { if (treeNode.checked == false) { cancelParentNodeChecked(treeNode); } getRootOnde(); treeNode.expand=false; treeNode.user=$scope.config.user; $scope.$apply(function() { ngModel.$setViewValue(treeNode); }); }, onExpand : function(event, treeId, treeNode) { //父节点展开勾选子节点 if (treeNode.checked && treeNode.isParent) { cancelChecked(treeNode); } } } }; //为了实现百度网盘的分享人员树,自定义方法 //递归去除父类节点的选中 function cancelParentNodeChecked(node) { zTree = $.fn.zTree.getZTreeObj("tree"); if (node.getParentNode()) { zTree.checkNode(node.getParentNode(), false, false); cancelParentNodeChecked(node.getParentNode()); } } //递归勾选子类 function cancelChecked(node) { if (node.isParent) {//判断是否为父节点 if (node.zAsync) {//判断该节点是否异步加载过子节点(有木有展开) zTree = $.fn.zTree.getZTreeObj("tree"); var childs = node.children; for ( var i = 0; i < childs.length; i++) { zTree.checkNode(childs[i], true, false);//勾选子节点 cancelChecked(childs[i]); } } } } function getRootOnde() { $scope.config.user = []; var treeObj = $.fn.zTree.getZTreeObj("tree"); var nodes = treeObj.getCheckedNodes(true); for ( var i = 0; i < nodes.length; i++) { var node = nodes[i].getParentNode(); if (node == null || nodes[i].getParentNode().checked == false) { angular.forEach($scope.config.user, function(item, index) { if (nodes[i].id == item.id && $scope.config.flag) { $scope.config.flag = false; } }); if ($scope.config.flag) { $scope.config.user.push(nodes[i]); } $scope.config.flag = true; } else { while (node != null) { if (node.getParentNode() == null || node.getParentNode().checked == false) { angular.forEach($scope.config.user, function(item, index) { if (node.id == item.id && $scope.config.flag) { $scope.config.flag = false; } }); if ($scope.config.flag) { $scope.config.user.push(node); } $scope.config.flag = true; break; } node = node.getParentNode(); } } } $scope.$apply(); } // 初始化树 eval("$.fn.zTree.init($('#"+ $scope.config.id+"'), setting)"); } else { } } }; return option; }); ceshiapp.controller("ceshicontroller", function($scope, $http) { $scope.user = []; $scope.auth_treenode_onclick=function(checked){ if (checked.expand == false || checked.expand == undefined) { $scope.user =checked.user; checked.expand = true; } else { return; } }; }); </script> </html>
发表评论
-
Angularjs自定义指令计算浏览器高度
2018-03-27 21:51 898<!DOCTYPE html> <html ... -
AngularJS封装webupload实现文件夹上传
2018-03-14 00:11 1814百度的webupload没有开放a ... -
巧用 Jersey RESTful WebService框架解决文件上传乱码
2018-01-28 13:50 2755一、当我们使用jersey框架封装的restful进行文件上传 ... -
AngularJS封装UEditor
2018-01-09 18:35 904<!DOCTYPE HTML> <html ... -
AngularJS实战之cookie的读取
2017-11-21 12:53 1017<!DOCTYPE html> <html ... -
AngularJS中$interval和$timeout的使用
2017-11-18 12:49 1223我们在项目中会出现定时刷新,延迟加载等多种场景。 接下来就看$ ... -
AngularJS实战之ngAnimate插件实现轮播
2017-11-08 21:44 1692第一步:引入angular-animate.js 第二步:注 ... -
基于Angular-animate.js和css实现的轮播图
2017-11-08 13:11 44<!DOCTYPE html> <html ... -
AngularJS实战之Controller之间的通信
2017-10-22 23:13 1360我们时常会在不同control ... -
AngularJS监听数组变化
2017-10-22 12:55 1065我们在使用angualr的监听时候,业务的需要我们会去监听一个 ... -
AngularJS的$location基本用法和注意事项
2017-10-16 15:31 1254一、配置config app.config([ '$locat ... -
AngularJS 无限滚动加载数据控件 ngInfiniteScroll
2017-10-13 22:03 1932在开发中我们可能会遇到滚动鼠标到浏览器底部实现数据的加载,js ... -
AngularJS实战之ng-repeat的详细用法
2017-10-13 21:23 1836一、基本语法 {{$index}}:获取元素的下标。 {{$f ... -
ng-show和ng-if的区别和使用场景
2017-10-11 23:31 1614一、ng-show(ng-hide)和ng-if都是控制标签的 ... -
[置顶] AngularJS实战之路由ui-sref-active使用
2017-09-11 20:42 1275当我们使用angularjs的路由时,时常会出现一个需求,当选 ... -
AngularJS实战之路由ui-view传参
2017-08-25 00:50 1190angular路由传参 首页 <!DOCTYPE htm ... -
AngularJS实战之filter的使用二
2017-08-24 23:01 955博文一中的filter是angular自带的filter,一般 ... -
AngularJS实战之filter的使用一
2017-08-24 22:36 852一、格式化数字为货币格式。 <div>{{mon ... -
AngularJS实战之路由ui-view
2017-08-18 01:15 9541. 路由(ui-router) 1.1. 环境 1) ang ... -
AngularJs ng-repeat用法二$parent.$index
2017-07-22 18:38 1061我们在开发时时常会出现repeat嵌套使用的情况,此时会想获取 ...
相关推荐
通过使用Directive,我们可以创建可重用的、可定制的、封装好的代码块。 接下来,文章中提到了创建一个表格的Directive,命名为tableHelper。这个Directive可以接受两个作用域属性,一个是datasource,它是表格的...
**AngularJS 封装 jQuery Datepicker 知识点详解** 在Web开发中,日期选择器是一个常见的组件,用于用户输入日期或选择日期范围。AngularJS 和 jQuery 的结合使用可以为开发者提供更强大的功能和更好的用户体验。这...
### AngularJS与jQuery zTree插件的整合使用 #### 知识点一:AngularJS框架介绍 AngularJS是一个强大的前端JavaScript框架,由Google开发和维护。它主要用于构建单页应用程序(SPA),采用MVC(Model-View-...
AngularJS中的自定义指令(Directives)是框架的核心特性之一,允许开发者创建可复用的UI组件,并且能够与应用程序的模型(Model)进行数据交互。在这个场景中,我们将深入探讨如何在AngularJS中实现自定义指令的...
写在前面:由于directive部分是angularjs中的重中之重,所以会分多篇章进行讲解。本章主要讲解directive返回对象中比较简单的属性 angularjs中使用.directive()来定义指令,该方法接收两个参数:name(指令的名字)...
-- directive: my-dir expression -->` 3. **字符串插值(String Interpolation)** 在AngularJS中,`{{ }}` 用于在HTML中插入表达式的值。如 `<img src="img/{{username}}.jpg"/>Hello {{username}}!` 当`...
在本文中,我们将深入探讨如何使用AngularJS的`directive`特性来实现在移动设备上自定义软键盘。AngularJS是一个强大的前端JavaScript框架,它通过`directives`提供了一种方式来扩展HTML,使得我们可以创建自定义的...
本文介绍如何利用AngularJS和RequireJS结合实现按需加载controller和directive,以减少首屏加载时间。 ### 知识点一:按需加载的概念与优势 按需加载(也称懒加载或异步加载)指的是将页面中某些不立即需要的资源...
Angular JS (Angular.JS) 是一组用来开发Web页面的框架、模板以及数据绑定和丰富UI组件,接下来通过本文给大家介绍AngularJS入门心得之directive和controller通信过程,对angularjs相关知识感兴趣的朋友一起学习吧
Learn how to build an AngularJS directive Create extendable modules for plug-and-play usability Build apps that react in real-time to changes in your data model ☆ 出版信息:☆ [作者信息] Alex ...
十一、AngularJS Directive之间的通讯 * 让Directive之间互相通讯 * transclude 指令:在Directive之间传递数据 十二、总结 * 学习AngularJS的经验和教训 * 如何继续深入学习AngularJS 十三、深入学习AngularJS ...
它提供了丰富的功能,包括数据绑定、依赖注入、指令等,而"angularjs-router-directive"则聚焦于AngularJS中的路由和指令两个核心概念。 路由在AngularJS中是通过`ngRoute`模块实现的,它允许我们在应用中定义多个...
在AngularJS中,自定义指令通过`@Directive`装饰器声明,其基本结构包括: ```javascript app.directive('directiveName', function() { return { restrict: 'AECM', // A - attribute, E - element, C - class, ...
主要介绍了AngularJS中directive指令使用之事件绑定与指令交互用法,结合实例形式分析了directive指令在模板的使用,事件的绑定及元素、属性、控制器之间的交互相关操作技巧,需要的朋友可以参考下