Angular结合zTree异步加载节点数据实例分享

本文主要和大家分享了angular结合ztree异步加载节点数据的难点以及方法,有这方面需求的朋友参考下吧,希望能帮助到大家。

1 前提准备

1.1 新建一个angular4项目

Angular结合zTree异步加载节点数据实例分享

1.2 去zTree官网下载zTree

zTree官网:点击前往

三少使用的版本:点击前往

Angular结合zTree异步加载节点数据实例分享

2 编程步骤

  Angular结合zTree异步加载节点数据实例分享

从打印出zTree对象可以看出,zTree对象利用init方法来实现zTree结构;init方法接收三个参数

参数1:一个ul标签的DOM节点对象

参数2:基本配置对象

参数3:标题信息数组

2.1 在index.html中引入相关js、css

Angular结合zTree异步加载节点数据实例分享

  TestZtree        

登录后复制

View Code

2.2 在TS文件中声明jquery对象

declare var $ : any;

登录后复制

2.3 在TS文件中编写代码

Angular结合zTree异步加载节点数据实例分享

 

import { Component, OnInit } from '@angular/core';declare var $ : any;@Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss']})export class AppComponent implements OnInit { // setting = { // view: { // showLine: true, // showIcon: true, // fontCss: this.getFont // }, // data: { // simpleData: { // enable: true, // idKey: 'id', // pIdKey: 'pId' // } // }, // callback: { // onClick: this.onCzTreeOnClick // } // }; // zNodes = [ // {id: 1, pId: 0, name: '1 一级标题', open: true, iconOpen:"assets/zTree/css/zTreeStyle/img/diy/1_open.png", iconClose:"assets/zTree/css/zTreeStyle/img/diy/1_close.png"}, // {id: 11, pId: 1, name: '1.1 二级标题', open: true, font:{'background-color':'skyblue', 'color':'white'}}, // {id: 111, pId: 11, name: '1.1.1 三级标题 -> 博客园', url: 'http://www.cnblogs.com/NeverCtrl-C/'}, // {id: 112, pId: 11, name: '1.1.2 三级标题 -> 单击', click: "alert('你单击了')"}, // {id: 12, pId: 1, name: '1.2 二级标题'}, // {id: 2, pId: 0, name: '2 一级标题'} // ] // getFont(treeId, node) { // return node.font ? node.font : {}; // } // onCzTreeOnClick(event, treeId, treeNode, clickFlag) { // alert(treeNode.name); // }  setting = { data: { simpleData: { enable: true } } }; zNodes = [ {id: 1, pId: 0, name: '1 一级标题'}, {id: 11, pId: 1, name: '1.1 二级标题'}, {id: 111, pId: 11, name: '1.1.1 三级标题'}, {id: 112, pId: 11, name: '1.1.2 三级标题'}, {id: 12, pId: 1, name: '1.2 二级标题'}, {id: 2, pId: 0, name: '2 一级标题'} ]; constructor() { } ngOnInit() {  console.log($); console.log($.fn.zTree); $.fn.zTree.init($("#ztree"),this.setting,this.zNodes); }}

登录后复制

View Code

2.4 在组件HTML中编写代码

    登录后复制登录后复制

    2.5 效果展示

    Angular结合zTree异步加载节点数据实例分享

    3 zTree基本功能

    3.1 不显示连接线

    3.1.1 官方文档

    不显示标题之间的连接线

    Angular结合zTree异步加载节点数据实例分享

    3.1.2 编程步骤

    在基本配置对象中指定showLine属性的值为false即可

     setting = { data: { simpleData: { enable: true } }, view: { showLine: false } };

    登录后复制

    3.2 不显示节点图标

    3.2.1 官方文档

    去掉节点前面的图标

    Angular结合zTree异步加载节点数据实例分享

    3.2.2 编程步骤

    将基本配置对象的showIcon属性设为false即可

    Angular结合zTree异步加载节点数据实例分享

    setting = { data: { simpleData: { enable: true } }, view: { showLine: false, showIcon: false } };

    登录后复制

    View Code

    3.3 自定义节点图标

    3.3.1 官方文档

    更改节点的图标

    Angular结合zTree异步加载节点数据实例分享

    3.3.2 编程步骤

    为treeNode节点数据设置icon/iconOpen/iconClose属性即可

    Angular结合zTree异步加载节点数据实例分享

    3.4 自定义字体

    3.4.1 官方文档

    更改节点字体的样式

    Angular结合zTree异步加载节点数据实例分享

    3.4.2 编程步骤

    为treeNode节点数据设置font属性即可,font属性的值是一个对象,该对象的内容和style的数据一样

    Angular结合zTree异步加载节点数据实例分享

    3.4.3 效果展示

    Angular结合zTree异步加载节点数据实例分享

    3.5 超链接

    3.5.1 官方文档

    点击节点标题就会自动跳转到对应的url

    注意01:click属性只能进行最简单的 click 事件操作。相当于 的内容。 如果操作较复杂,请使用 onClick 事件回调函数。

    Angular结合zTree异步加载节点数据实例分享

    3.5.2 编程步骤

    为treeNode节点数据设置url、click属性即可

    技巧01:设置click属性时,属性值必须是一些简单的onClick事件

    技巧02:设置target属性时,属性值有 _blank 和 _self

    _blank -> 用一个新窗口打开

    _self -> 在原来的窗口打开

    Angular结合zTree异步加载节点数据实例分享

     zNodes = [ {id: 1, pId: 0, name: '1 一级标题', open: true, iconOpen:"assets/zTree/css/zTreeStyle/img/diy/1_open.png", iconClose:"assets/zTree/css/zTreeStyle/img/diy/1_close.png"}, {id: 11, pId: 1, name: '1.1 二级标题', open: true, font:{'background-color':'skyblue', 'color':'white'}}, {id: 111, pId: 11, name: '1.1.1 三级标题 -> 博客园1', url: 'http://www.cnblogs.com/NeverCtrl-C/', target: '_blank'}, {id: 113, pId: 11, name: '1.1.1 三级标题 -> 博客园2', url: 'http://www.cnblogs.com/NeverCtrl-C/', target: '_self'}, {id: 112, pId: 11, name: '1.1.2 三级标题 -> 单击', click: "alert('你单击了')"}, {id: 12, pId: 1, name: '1.2 二级标题'}, {id: 2, pId: 0, name: '2 一级标题'} ]

    登录后复制

    View Code

    3.6 单击控制

    3.6.1 官方文档

    点击节点标题时触发相应的方法

    技巧01:在angular中可以利用这个用法来实现路由跳转

    Angular结合zTree异步加载节点数据实例分享

    3.6.2 编程步骤

    设置基本配置对象的onClick属性

    技巧01:onClick属性值是一个方法的引用,我们需要自己编写这个方法

    Angular结合zTree异步加载节点数据实例分享

     setting = { view: { showLine: true, showIcon: true, fontCss: this.getFont }, data: { simpleData: { enable: true, idKey: 'id', pIdKey: 'pId' } }, callback: { onClick: this.onCzTreeOnClick } };

    登录后复制

    View Code

    编写onClick触发方法

    Angular结合zTree异步加载节点数据实例分享

     onCzTreeOnClick(event, treeId, treeNode, clickFlag) { alert(treeNode.name); }

    登录后复制

    View Code

    3.6.3 代码汇总

    import { Component, OnInit } from '@angular/core';declare var $ : any;@Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss']})export class AppComponent implements OnInit { setting = { view: { showLine: true, showIcon: true, fontCss: this.getFont }, data: { simpleData: { enable: true, idKey: 'id', pIdKey: 'pId' } }, callback: { onClick: this.onCzTreeOnClick }, // async: { // enable: true, // url:"http://localhost:3000/data", // type: "get", // // autoParam:["id", "name=n", "level=lv"], // // otherParam:{"otherParam":"zTreeAsyncTest"}, // dataFilter: this.filter // } }; zNodes = [ {id: 1, pId: 0, name: '1 一级标题', open: true, iconOpen:"assets/zTree/css/zTreeStyle/img/diy/1_open.png", iconClose:"assets/zTree/css/zTreeStyle/img/diy/1_close.png"}, {id: 11, pId: 1, name: '1.1 二级标题', open: true, font:{'background-color':'skyblue', 'color':'white'}}, {id: 111, pId: 11, name: '1.1.1 三级标题 -> 博客园1', url: 'http://www.cnblogs.com/NeverCtrl-C/', target: '_blank'}, {id: 113, pId: 11, name: '1.1.1 三级标题 -> 博客园2', url: 'http://www.cnblogs.com/NeverCtrl-C/', target: '_self'}, {id: 112, pId: 11, name: '1.1.2 三级标题 -> 单击', click: "alert('你单击了')"}, {id: 12, pId: 1, name: '1.2 二级标题'}, {id: 2, pId: 0, name: '2 一级标题'} ] getFont(treeId, node) { return node.font ? node.font : {}; } // filter(treeId, parentNode,responseData) { // console.log(responseData); // if (responseData) { // for(var i =0; i < responseData.length; i++) { // responseData[i].name += "动态节点数据" + responseData[i].id; // } // } // return responseData; // } onCzTreeOnClick(event, treeId, treeNode, clickFlag) { alert(treeNode.name); }  constructor() { }  ngOnInit() {  console.log('打印输出jquery对象'); console.log($); console.log('但因输出zTree对象'); console.log($.fn.zTree); $.fn.zTree.init($("#ztree"),this.setting,this.zNodes); // $.fn.zTree.init($("#ztree"),this.setting); }}

    登录后复制

    View Code

    3.7 异步加载节点数据

    3.7.1 官方文档

    节点的数据是从后台进行获取的

    Angular结合zTree异步加载节点数据实例分享

    3.7.2 编程步骤

    技巧01:异步加载节点数据时init方法不用传递第三个参数

    Angular结合zTree异步加载节点数据实例分享

    > 准备一个后台用于返回JSON格式的数据

    技巧01:返回的JSON数据是一个列表,格式为

    [ { "id": 1, "pId": 0, "name": "1 one" }, { "id": 2, "pId": 0, "name": "2 two" } ]

    登录后复制

    技巧02:三少偷懒,是利用json-server模拟的后台数据,哈哈;json-server

    > 设置基本配置对象的async属性

    Angular结合zTree异步加载节点数据实例分享

     setting = { view: { showLine: true, showIcon: true, fontCss: this.getFont }, data: { simpleData: { enable: true, idKey: 'id', pIdKey: 'pId' } }, callback: { onClick: this.onCzTreeOnClick }, async: { enable: true, url:"http://localhost:3000/data", type: "get", // autoParam:["id", "name=n", "level=lv"], // otherParam:{"otherParam":"zTreeAsyncTest"}, dataFilter: this.filter } };

    登录后复制

    View Code

    > 编写响应数据处理方法

    Angular结合zTree异步加载节点数据实例分享

     filter(treeId, parentNode,responseData) { console.log(responseData); if (responseData) { for(var i =0; i < responseData.length; i++) { responseData[i].name += "动态节点数据" + responseData[i].id; } } return responseData; }

    登录后复制

    View Code

    3.7.3 代码总汇

    { "data":  [ { "id": 1, "pId": 0, "name": "1 one" }, { "id": 11, "pId": 1, "name": "1.1 oneToOne" }, { "id": 12, "pId": 1, "name": "1.2 oneToTwo" }, { "id": 2, "pId": 0, "name": "2 two" } ]}

    登录后复制

    模拟后台响应数据

      登录后复制登录后复制

      HTML

      import { Component, OnInit } from '@angular/core';declare var $ : any;@Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss']})export class AppComponent implements OnInit { setting = { view: { showLine: true, showIcon: true, fontCss: this.getFont }, data: { simpleData: { enable: true, idKey: 'id', pIdKey: 'pId' } }, callback: { onClick: this.onCzTreeOnClick }, async: { enable: true, url:"http://localhost:3000/data", type: "get", // autoParam:["id", "name=n", "level=lv"], // otherParam:{"otherParam":"zTreeAsyncTest"}, dataFilter: this.filter } }; // zNodes = [ // {id: 1, pId: 0, name: '1 一级标题', open: true, iconOpen:"assets/zTree/css/zTreeStyle/img/diy/1_open.png", iconClose:"assets/zTree/css/zTreeStyle/img/diy/1_close.png"}, // {id: 11, pId: 1, name: '1.1 二级标题', open: true, font:{'background-color':'skyblue', 'color':'white'}}, // {id: 111, pId: 11, name: '1.1.1 三级标题 -> 博客园1', url: 'http://www.cnblogs.com/NeverCtrl-C/', target: '_blank'}, // {id: 113, pId: 11, name: '1.1.1 三级标题 -> 博客园2', url: 'http://www.cnblogs.com/NeverCtrl-C/', target: '_self'}, // {id: 112, pId: 11, name: '1.1.2 三级标题 -> 单击', click: "alert('你单击了')"}, // {id: 12, pId: 1, name: '1.2 二级标题'}, // {id: 2, pId: 0, name: '2 一级标题'} // ] getFont(treeId, node) { return node.font ? node.font : {}; } filter(treeId, parentNode,responseData) { console.log(responseData); if (responseData) { for(var i =0; i < responseData.length; i++) { responseData[i].name += "动态节点数据" + responseData[i].id; } } return responseData; } onCzTreeOnClick(event, treeId, treeNode, clickFlag) { alert(treeNode.name); }  constructor() { }  ngOnInit() {  console.log('打印输出jquery对象'); console.log($); console.log('但因输出zTree对象'); console.log($.fn.zTree); // $.fn.zTree.init($("#ztree"),this.setting,this.zNodes); $.fn.zTree.init($("#ztree"),this.setting); }}

      登录后复制

      TS

      3.7.4 效果展示

      Angular结合zTree异步加载节点数据实例分享

      相关推荐:

      jquery easyui tree异步加载子节点详解

      JavaScript文件的同步和异步加载的实现代码

      zTree异步加载展开第一级节点方法实现

      以上就是Angular结合zTree异步加载节点数据实例分享的详细内容,更多请关注【创想鸟】其它相关文章!

      版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

      发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2789245.html

      (0)
      上一篇 2025年3月8日 18:40:16
      下一篇 2025年2月19日 22:18:15

      AD推荐 黄金广告位招租... 更多推荐

      相关推荐

      • 使用路由延迟加载Angular模块实例详解

        本文主要介绍了详解使用路由延迟加载 angular 模块,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 Angular 非常模块化,模块化的一个非常有用的特性就是模块作为延迟加载点。延迟加载…

        2025年3月8日
        200
      • Angular路由复用实现策略

        本文主要介绍了浅谈angular路由复用策略,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 一、引言 路由在执行过程中对组件无状态操作,即路由离退时组件状态也一并被删除;当然在绝大多数场景下…

        编程技术 2025年3月8日
        200
      • 用路由延迟加载Angular模块方法

        本文主要介绍使用路由延迟加载 angular 模块方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。希望能帮助到大家。 Angular 非常模块化,模块化的一个非常有用的特性就是模块作为延迟加载点。延迟加载意味着可以在后台加载一个模…

        2025年3月8日
        200
      • jQuery使用zTree插件实现可拖拽的树代码分享

        在目前接触到的树插件中,我觉得ztree比较简单,也容易上手。有一次业务需求是将某对象分组树上的对象可以随意拖拽,相当于改变了对象的分组,因此我用到了ztree,对其进行了一些列学习。 本文主要介绍js使用zTree插件实现可拖拽的树示例,…

        2025年3月8日
        200
      • Angular实现将填入表单的数据渲染到表格

        本文主要和大家介绍angular将填入表单的数据渲染到表格的方法,非常具有实用价值,需要的朋友可以参考下,希望能帮助到大家。 一、项目简介 我们将采用Angular框架来做一个demo,这个demo将要实现的功能如下: 在X坐标和Y坐标文本…

        2025年3月8日
        200
      • highcharts在angular中如何正确使用

        本文主要和大家介绍highcharts 在angular中的使用示例代码,非常具有实用价值,需要的朋友可以参考下,希望能帮助到大家。 安装依赖 npm install highcharts-ng –save 登录后复制 引入依赖 ‘hig…

        2025年3月8日
        200
      • VUE页面实现加载外部HTML方法

        前后端分离,后端提供了接口。但有一部分数据,比较产品说明文件,是存在其他的服务器上的。所以,在页面显示的时候,如果以页面内嵌的形式显示这个说明文件。需要搞点事情以达到想要的效果。本文主要和大家介绍vue页面中加载外部html的示例代码,小编…

        2025年3月8日
        200
      • Angular客户端请求Rest服务跨域问题如何解决

        本文主要和大家介绍angular客户端请求rest服务跨域问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。 1.问题描述:通过Origin是http://localhost:4200请求http://lo…

        2025年3月8日
        200
      • vue实现页面加载动画代码教程

        我们经常看到数据未出现时,页面中会有一条提示消息, 页面正在加载中,如何实现该效果呢 ,本文主要为大家详细介绍了vue实现页面加载动画效果,vue页面出现正在加载的初始页面与实现动画效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希…

        编程技术 2025年3月8日
        200
      • angular指令ng-options如何使用

        ng-options指令用途: 在表达式中使用数组或对象来自动生成一个select中的option列表。ng-options与ng-repeat很相似,很多时候可以用ng-repeat来代替ng-options。但是ng-options提供…

        2025年3月8日
        200

      发表回复

      登录后才能评论