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。

时间: 2024-08-03 00:42:43

AngularJS 利用指令集成ZTree的相关文章

angularjs利用指令调用ueditor百度编辑器例子

一直以来,angularjs的富文本编辑器都比较难做,主要是第三方的编辑器很难集成进来,今天花时间研究了一下,发现ueditor主要加载两个js文件 ueditor.config.js ueditor.all.js 能不能把这两个文件异步加载呢?答案是肯定的.我们新建一个服务用来异步加载资源,并设置必要的回调方法. 服务代码:  代码如下 复制代码 services.factory('Common', [   '$http', '$q', function($http, $q) {    ret

AngularJS递归指令实现Tree View效果示例_AngularJS

本文实例讲述了AngularJS递归指令实现Tree View效果的方法.分享给大家供大家参考,具体如下: 在层次数据结构展示中,树是一种极其常见的展现方式.比如系统中目录结构.企业组织结构.电子商务产品分类都是常见的树形结构数据. 这里我们采用Angular的方式来实现这类常见的tree view结构. 首先我们定义数据结构,采用以children属性来挂接子节点方式来展现树层次结构,示例如下: [ { "id":"1", "pid":&quo

AngularJS Slider指令(directive)扩展

继上一篇基于jQuery UI Autocomplete的AngularJS 指令(directive)扩展,在这里发布一个AngularJS的Slider扩展.如 果你还不了解AngularJS话的情参见AngularJs - Javascript MVC 框架,Angular-Bootstrap和Compiler以及Google-AngularJS 官方文档. jsfiddle演示:http://jsfiddle.net/whitewolf/vNfsm/20/embedded/: html:

AngularJS ng-mousedown 指令_AngularJS

AngularJS ng-mousedown 指令 AngularJS 实例 在鼠标按下时执行表达式: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script> </head&g

AngularJS ng-controller 指令简单实例_AngularJS

AngularJS ng-controller 指令 AngularJS 实例 为应用变量添加控制器: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script> </head&g

学习AngularJs:Directive指令用法(完整版)_AngularJS

本教程使用AngularJs版本:1.5.3 AngularJs GitHub: https://github.com/angular/angular.js/ AngularJs下载地址:https://angularjs.org/ 摘要:Directive(指令)笔者认为是AngularJ非常强大而有有用的功能之一.它就相当于为我们写了公共的自定义DOM元素或CLASS属性或ATTR属性,并且它不只是单单如此,你还可以在它的基础上来操作scope.绑定事件.更改样式等.通过这个Directiv

AngularJS封装指令方法详解_AngularJS

本文实例讲述了AngularJS封装指令方法.分享给大家供大家参考,具体如下: 引言:angularjs是一个中等重量级的前端开发框架 HTML是一门很好的为静态文本设计的语言,但要构建动态的web应用它就显的乏力了.通常,我们使用以下技术来解决静态网页技术在构建动态应用上的不足: 1.类库:类库是一类函数的集合,它能帮助你写web应用.这里起主导作用是你的代码,由你来决定何时使用类库.典型的类库,例如prototype.jQuery等. 2.框架:框架式一种特殊的.已经实现的web应用,你只需

AngularJS 自定义指令详解及实例代码_AngularJS

AngularJS支持用户自定义标签属性,在不需要使用DOM节点操作的情况下,添加自定义的内容. 前面提到AngularJS的四大特性: 1 MVC 2 模块化 3 指令 4 双向数据绑定 下面将会介绍如下的内容: 1 如何自定义指令 2 自定义指令的使用 3 自定义指令的内嵌使用 如何自定义指令: Angular是基于模块的框架,因此上来肯定要创建一个自己的模块: var myAppModule = angular.module("myApp",[]); 然后在此模块基础上创建指令d

AngularJS 自定义指令详解及示例代码_AngularJS

自定义指令中使用AngularJS扩展HTML的功能.自定义指令使用的"指令"的功能定义.自定义指令只是替换了它被激活的元素.引导过程中AngularJS应用程序找到了匹配的元素,并做好使用自定义指令compile()方法一次活动再处理使用基于指令的范围自定义指令link()方法的元素. AngularJS提供支持,以下列元素的类型来创建自定义指令. Element directives - 指令遇到时激活一个匹配的元素. Attribute - - 指令遇到时激活一个匹配的属性. C