AngularJS-tree教程

2019-10-30 18:47:24 浏览数 (1)

AngularJS-tree教程

简介

AngularJS-tree是AngularJS官方出品的tree控件,它与AngularJS无缝组合、且方便实用。AngularJS-tree的github官方地址是https://github.com/wix/angular-tree-control。英文好的可以直接看,这篇教程是针对官方API进行整理翻译而来。

下面是完成tree的学习必须要知道的步骤。

下载、配置环境

导入资源文件

下载AngularJS-tree的代码,下载地址:https://github.com/wix/angular-tree-control。导入下面三个资源文件。

代码语言:javascript复制
<script type="text/javascript"src="/angular-tree-control.js"></script>
<link rel="stylesheet"type="text/css" href="css/tree-control.css">
<link rel="stylesheet"type="text/css" href="css/tree-control-attribute.css">

当然,还要导入Angular.js

代码语言:javascript复制
<script src="https://cdn.bootcss.com/angular.js/1.6.3/angular.min.js"></script>

添加依赖模块

在JS中添加它的依赖模块

angular.module('myApp', ['treeControl']);

简单实现

Html标签

可以用过添加<treecontrol>标签或着在<div>中加上treecontrol属性来使用

代码语言:javascript复制
<!-- as a Dom element -->
<treecontrol class="tree-classic"
  tree-model="dataForTheTree"
  options="treeOptions"
  on-selection="showSelected(node)"
  selected-node="node1">
  employee: {{node.name}} age {{node.age}}
</treecontrol>
<!-- as an attribute -->
<div treecontrol class="tree-classic"
  tree-model="dataForTheTree"
  options="treeOptions"
  on-selection="showSelected(node)"
  selected-node="node1">
  employee: {{node.name}} age {{node.age}}
</div>

JS

代码语言:javascript复制
$scope.treeOptions = {
   nodeChildren: "children",
   dirSelectable: true,
   injectClasses: {
       ul: "a1",
       li: "a2",
       liSelected: "a7",
       iExpanded: "a3",
       iCollapsed: "a4",
       iLeaf: "a5",
       label: "a6",
       labelSelected: "a8"
    }
}
$scope.dataForTheTree = [{
       "name": "Joe",
       "age": "21",
       "children": [
           { "name": "Smith", "age": "42","children": [] },
           {
                "name":"Gary",
                "age":"21",
                "children": [{
                    "name":"Jenifer",
                    "age":"23",
                    "children": [
                        { "name":"Dani", "age": "32", "children": [] },
                        { "name":"Max", "age": "34", "children": [] }
                    ]
               }]
           }
       ]
   },
    {"name": "Albert", "age": "33","children": [] },
    {"name": "Ron", "age": "29","children": [] }
];

效果

属性配置讲解

加载数据

属性

tree-model:树数据的对象,格式: [Node|Array[Node]],对象范围在'$scope'的范围内。范围可以是一个node数组或一个node对象。

options:树的配置

options的配置

nodeChildren:每个孩子节点的属性名,默认是” children”。

如数据:[{

"name": "Joe",

"age": "21",

"list": [{ "name": "Smith","age": "42", "children": [] }]

}],其nodeChildren的值就是”list”。

dirSelectable:目录是否可被选中,默认“true”。为“true”,点击目录名为选择,点击目录图标才为展开;为“false”时,点击目录就是展开。

综合代码
代码语言:javascript复制
<treecontrol class="tree-classic" tree-model="dataForTheTree" options="treeOptions1" >
   employee: {{node.name}} age {{node.age}}
</treecontrol>
代码语言:javascript复制
$scope.treeOptions1 = {
   nodeChildren: "children",
   dirSelectable:false
}
$scope.dataForTheTree=如上
效果

多选配置

属性

selected-node:[Node],当multiSelection=false,绑定tree中单选node。

selected-nodes:[Array[Node]],当multiSelection=true,绑定tree中多选nodes。

options的配置

multiSelection:[Boolean],是否多选,默认”false”

综合代码
代码语言:javascript复制
<treecontrol class="tree-classic" tree-model="dataForTheTree" options="treeOptions1"
selected-nodes="nodes">
   employee: {{node.name}} age {{node.age}}
</treecontrol>
</br>
<!-- 动态显示多选选择项 -->选中:{{nodes}}
代码语言:javascript复制
$scope.treeOptions1 = {
   nodeChildren: "children",
   dirSelectable:false,
   multiSelection:true
}

效果

其他属性配置

属性
选择事件

on-selection:(node, selected),选择node触发事件,例‘on-selection="showSelected(node)"‘。

排序

order-by:value,根据value排序

reverse-order:boolean,true:倒排序;false:正排序。

例子:

代码语言:javascript复制
<treecontrol class="tree-classic" tree-model="dataForTheTree" options="treeOptions1"
selected-nodes="nodes" order-by="order" reverse-order="false">
   employee: {{node.name}} age {{node.age}}
</treecontrol>
代码语言:javascript复制
$scope.order="age";
过滤器

filter-expression:过滤器公式

filter-comparator:是否完全匹配(大小写)

过滤表达式(filter-expression)用于选择的节点从树中显示。它可以是一个字符串,对象或函数。如果一个字符串,它是用来匹配的节点属性值。如果一个对象,每个属性的表达对象是用来匹配的节点属性名称相同的值。一个函数可以用来写任意的滤波器,并将树的每个节点调用。

过滤器的比较器,如果预期值用于确定(从筛选器表达式)和实际值(从数组中的对象)应被视为一个匹配。如果为false,它寻找子串匹配在不区分大小写的方式(默认)。如果是真的,它看起来完全匹配。如果一个函数,函数将给定的目标值,并比较谓词值和应该如果项目应包括在过滤结果返回true。

例子:

代码语言:javascript复制
<treecontrol class="tree-classic" tree-model="dataForTheTree" options="treeOptions1" selected-nodes="nodes" order-by="order" reverse-order="false"
filter-expression="predicate" filter-comparator="comparator">
   employee: {{node.name}} age {{node.age}}
</treecontrol>
代码语言:javascript复制
$scope.predicate = "Smith";
$scope.comparator = false;
配置

allowDeselect:node是否可以取消选中,默认“true”

isLeaf:function (node)->boolean, 用于确定某个节点是叶或枝。为确定叶或分支节点的孩子存在默认功能检查。

injectClasses:给node注入额外的css

0 人点赞