AngularJS 利用指令集成ZTree

简介:

前段时间一直在看AngularJS的资料,感觉是个很好的框架,很想有机会尝试用它做点什么。

jQuery ZTree是国内非常不错的JQuery插件,功能齐全,文档和API也非常的友好,之前项目上常用此插件。

 AngularJS 功能虽然非常强大,但UI上提供的插件不像JQuery那么多,而且只能通过directive定义扩展的UI插件,虽然国外已经提供了一些基于 directive的Tree功能实现,但毕竟不像ZTree那样强大,而且Tree是做项目中很长用的一个基本功能。

因此,花了一点时间做了一个例子将ZTree应用到AngularJS中。

Java代码   收藏代码
  1. <!doctype html>  
  2. <html lang="en" ng-app="app">  
  3. <head>  
  4.   <meta charset="utf-8">  
  5.   <title>ZTree</title>  
  6.   <link rel="stylesheet" href="css/app.css">  
  7.   <link rel="stylesheet" href="css/bootstrap.css">  
  8.   <link rel="stylesheet" href="css/animations.css">  
  9.   <link rel="stylesheet" href="css/zTreeStyle/zTreeStyle.css">  
  10.       
  11.   <script src="lib/jquery-1.10.2.min.js"></script>  
  12.   <script src="lib/jquery.ztree.all-3.5.js"></script>  
  13.   <script src="lib/angular.min.js"></script>  
  14.   <script src="app.js"></script>  
  15. </head>  
  16. <body>  
  17.   
  18.     <body ng-controller='MyController'>  
  19.         <ul tree class="ztree" ng-model="selectNode"></ul>  
  20.     </body>  
  21.     <pre>  
  22.         {{selectNode | json}}  
  23.     </pre>  
  24.   
  25. </body>  
  26. </html>  

 app.js

Java代码   收藏代码
  1. 'use strict';  
  2.   
  3. /* App Module */  
  4. var appModule = angular.module('app', []);  
  5. appModule.directive('tree', function () {  
  6.     return {  
  7.         require: '?ngModel',  
  8.         restrict: 'A',  
  9.         link: function ($scope, element, attrs, ngModel) {  
  10.             //var opts = angular.extend({}, $scope.$eval(attrs.nlUploadify));  
  11.             var setting = {  
  12.                 data: {  
  13.                     key: {  
  14.                         title: "t"  
  15.                     },  
  16.                     simpleData: {  
  17.                         enable: true  
  18.                     }  
  19.                 },  
  20.                 callback: {  
  21.                     onClick: function (event, treeId, treeNode, clickFlag) {  
  22.                         $scope.$apply(function () {  
  23.                             ngModel.$setViewValue(treeNode);  
  24.                         });  
  25.                     }  
  26.                 }  
  27.             };  
  28.   
  29.             var zNodes = [  
  30.                 { id: 1, pId: 0, name: "普通的父节点", t: "我很普通,随便点我吧", open: true },  
  31.                 { id: 11, pId: 1, name: "叶子节点 - 1", t: "我很普通,随便点我吧" },  
  32.                 { id: 12, pId: 1, name: "叶子节点 - 2", t: "我很普通,随便点我吧" },  
  33.                 { id: 13, pId: 1, name: "叶子节点 - 3", t: "我很普通,随便点我吧" },  
  34.                 { id: 2, pId: 0, name: "NB的父节点", t: "点我可以,但是不能点我的子节点,有本事点一个你试试看?", open: true },  
  35.                 { id: 21, pId: 2, name: "叶子节点2 - 1", t: "你哪个单位的?敢随便点我?小心点儿..", click: false },  
  36.                 { id: 22, pId: 2, name: "叶子节点2 - 2", t: "我有老爸罩着呢,点击我的小心点儿..", click: false },  
  37.                 { id: 23, pId: 2, name: "叶子节点2 - 3", t: "好歹我也是个领导,别普通群众就来点击我..", click: false },  
  38.                 { id: 3, pId: 0, name: "郁闷的父节点", t: "别点我,我好害怕...我的子节点随便点吧...", open: true, click: false },  
  39.                 { id: 31, pId: 3, name: "叶子节点3 - 1", t: "唉,随便点我吧" },  
  40.                 { id: 32, pId: 3, name: "叶子节点3 - 2", t: "唉,随便点我吧" },  
  41.                 { id: 33, pId: 3, name: "叶子节点3 - 3", t: "唉,随便点我吧" }  
  42.             ];  
  43.             $.fn.zTree.init(element, setting, zNodes);  
  44.         }  
  45.     };  
  46. });  
  47. appModule.controller('MyController', function ($scope) {      
  48. });  

实现功能:定义tree这个属性,使<ul tree class="ztree" ng-model="selectNode"></ul>自动变成一个有数据的tree,点击树节点,自动变更model 的selectNode。

相关文章
|
定位技术
angularJs集成百度地图
angularJs集成百度地图
120 0
|
JavaScript 前端开发 UED
|
Web App开发 缓存 JavaScript
如何在 ASP.NET MVC 中集成 AngularJS(3)
今天来为大家介绍如何在 ASP.NET MVC 中集成 AngularJS 的最后一部分内容。 调试路由表 - HTML 缓存清除 就在我以为示例应用程序完成之后,我意识到,我必须提供两个版本的路由表:一个运行在调试模式的应用程序下和一个运行在发布模式的应用程序下。
1110 0
|
缓存 JavaScript 前端开发
如何在 ASP.NET MVC 中集成 AngularJS(2)
在如何在 ASP.NET MVC 中集成 AngularJS(1)中,我们介绍了 ASP.NET MVC 捆绑和压缩、应用程序版本自动刷新和工程构建等内容。 下面介绍如何在 ASP.NET MVC 中集成 AngularJS 的第二部分。
1310 0
|
Web App开发 JavaScript 前端开发
如何在 ASP.NET MVC 中集成 AngularJS(1)
介绍 当涉及到计算机软件的开发时,我想运用所有的最新技术。例如,前端使用最新的 JavaScript 技术,服务器端使用最新的基于 REST 的 Web API 服务。另外,还有最新的数据库技术、最新的设计模式和技术。
1438 0
|
Web App开发 JavaScript 测试技术
将AngularJS的单元测试和端到端测试集成到gradle构建脚本中
我目前工作的一个项目后端使用java和spring建立了一个restful service,前端使用AngularJS来渲染页面,提供用户接口。在前端的AngularJS项目中,我们使用Jasmine来写单元测试,使用AngularJS自带的Angular_scenario来写端到端测试。
1249 0
|
2月前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
16天前
|
消息中间件 监控 Java
您是否已集成 Spring Boot 与 ActiveMQ?
您是否已集成 Spring Boot 与 ActiveMQ?
29 0