博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
angular三级联动组件编写,树形组件
阅读量:6687 次
发布时间:2019-06-25

本文共 3111 字,大约阅读时间需要 10 分钟。

    
JS Bin

//遍历取出数据,解析多个层级数据,一维数据解析成树形,如本来就为树形结构,忽略此步骤

/*同getTree函数同种功能,临时变量写法*/        function listTree(data, pid) {            var result = [],                temp;            for (var i = 0; i < data.length; i++) {                if (data[i].parentcode == pid) {                    var obj = {                        "name": data[i].name,                        "code": data[i].code                    }                    temp = listTree(data, data[i].code)                    if (temp.length > 0) {                        obj.children = temp                    }                    result.push(obj)                }            }            return result        }        function getTree(nodes) {            var gc = function(parentid) {                var cn = [];                for (var i = 0; i < nodes.length; i++) {                    var n = nodes[i];                    if (n.parentcode == parentid) {                        n.children = gc(n.code);                        cn.push(n);                    };                };                return cn;            };            return gc("");        };
var vm = this;        vm.tree = getTree(dataset);        // vm.tree = listTree(dataset, "");
vm.itemClicked = function($item) {            vm.selectedItem = $item;            console.log($item, 'item clicked');        };        vm.itemCheckedChanged = function($item) {            $http.post('/url', $item);            console.log($item, 'item checked');        };        return vm;    }])

//自定义指令treeView,编写成组件

.directive('treeView', [function() {        return {            restrict: 'E',            templateUrl: '/treeView.html',            scope: {//隔离作用域                treeData: '=',                canChecked: '=',//隔离scope和父scope的双向绑定                textField: '@',//单向 父scope属性值改变时,directive的scope值也会跟这改变,但是相反就不行                itemClicked: '&',                itemCheckedChanged: '&',//当 directive 中有动作需要更新到父 scope 中的时候,可以在父 scope 上下文中执行一段代码或者一个函数.                itemTemplateUrl: '@'            },            controller: ['$scope', function($scope) {                $scope.itemExpended = function(item, $event) {                    item.$$isExpend = !item.$$isExpend;                    $event.stopPropagation();                };                $scope.getItemIcon = function(item) {                    var isLeaf = $scope.isLeaf(item);                    // if (isLeaf) {                    //     return 'fa fa-leaf';                    // }                    return item.$$isExpend ? 'fa fa-minus' : 'fa fa-plus';                };                $scope.isLeaf = function(item) {                    return !item.children || !item.children.length;                };                $scope.warpCallback = function(callback, item, $event) {                    ($scope[callback] || angular.noop)({                        $item: item,                        $event: $event                    });                };            }]        };    }]);    

Tree view

Item selected

{
{demo.selectedItem | json}}

转载地址:http://wceao.baihongyu.com/

你可能感兴趣的文章
10、《每天5分钟玩转Docker容器技术》学习-Docker命令之本地镜像管理
查看>>
shell脚本:输出昨天的日期
查看>>
css优先级详解
查看>>
小白第三天
查看>>
2016年linux运维人员必会开源运维工具体系
查看>>
安装lenovo SR860 7x69服务器遇到的坑
查看>>
MIT透过机器学习技术用胺基酸预测蛋白质结构
查看>>
python课堂笔记之django-day01(8)
查看>>
Hadoop之HDFS分布式文件系统具有哪些优点?
查看>>
小型企业公司路由器做DHCP服务器
查看>>
愿不负青春 历经风雨 归期我们仍是少年|六一大童节
查看>>
JAVA数组和面向对象
查看>>
NVisionXR_iOS教程四 —— 在立方体上贴材质
查看>>
Microsoft Visual C++ Runtime library not enough space for thread data
查看>>
Centos 7 ntp时间服务器搭建
查看>>
电压电流采集模块,温湿度采集,称重模块,变送器,adc模数转换模块
查看>>
RAID和LVM
查看>>
2019北京物联网智慧城市大数据博览会开启中国之路
查看>>
华为云网络服务两场景
查看>>
将 Desktop Central 与帮助台和 OS Deployer 集成
查看>>