Angular2整合其他插件的方法


Posted in Javascript onJanuary 20, 2018

前言:现在有很多朋友在接触Angular2的时候,总是不可避免的会使用一些其他的第3方的插件,而这些插件可能都是基于jQuery的,而且也没有对应的angular2的版本,这里我就来讲解一下,在这种情况下,如何整合第3方的jQuery插件。我们以Angular2整合zTree为例来说明整合的思路及过程。

zTree官方网站:http://www.treejs.cn/v3/main.php#_zTreeInfo

1.一般我在想要将像zTree这种插件集成进来的时候,我会先直接去看zTree它们的在线例子,比如说这个例子:

https://github.com/zTree/zTree_v3/blob/master/demo/cn/super/metro.html

效果图是这样的:

Angular2整合其他插件的方法

2.看到这个效果之后,我们再来看这个例子的代码:关键代码在这里:

$(document).ready(function(){
      $.fn.zTree.init($("#treeDemo"), setting, zNodes);
 });

这段代码中使用了jQuery,对吧,那我们要集成zTree进来的话,就必须先把jQuery引入进来。那我们先不管怎么来集成zTree,我们先来解决如何将jQuery引入进来的问题:

3.引入jQuery到angular2项目中,当然,如果你使用的插件没有依赖jQuery的话可以跳过这个步骤,不过一般第3方插件都依赖它,对吧。引入jQuery的话,就比较简单,只要在index.html文件中引入进来就可以了:

<script src="node_modules/jquery/dist/jquery.min.js"></script>

引入进来之后,我们需要测试下,jQuery是否成功引入进来。我们使用ng g c demo命令生成一个组件来测试jQuery是否成功引入:

![输入图片说明](https://static.oschina.net/uploads/img/201703/26202750_1UeL.png "在这里输入图片标题")你会看到,angular-cli已经帮我们生成了必要的文件,然后我们打开demo.component.ts文件,在import语句后面添加以下内容:

declare var $ : any;
import { Component, OnInit } from '@angular/core';declare var $ : any;
@Component({selector: 'app-demo',templateUrl: './demo.component.html',styleUrls: ['./demo.component.css']})export class DemoComponent implements OnInit {
constructor() { }
ngOnInit() {console.log($);}

}

上面代码添加完成之后,查看浏览器的控制台输出:

![输入图片说明](https://static.oschina.net/uploads/img/201703/26203534_TLtD.png "在这里输入图片标题")会发现输出的就是我们平时使用到的jquery对象$。到此,我们就算成功引入jQuery到项目中了。

4.将zTree的js库和css库引入到项目中,在index.html文件中我们添加以下代码:

<link rel="stylesheet" type="text/css" href="./assets/zTree/css/metroStyle/metroStyle.css" rel="external nofollow" > <script src="./assets/zTree/js/jquery.ztree.core.min.js"></script>```这样之后,我们就可以测试zTree是否正常引入进来了,我们在demo.component.ts文件中的ngOnInit方法中添加以下代码:```console.log($.fn.zTree);```查看控制台会发现,以下输出:![输入图片说明](https://static.oschina.net/uploads/img/201703/26204017_4TLk.png "在这里输入图片标题")在输出的内容我们可以看到,有zTree用来初始化的init方法,这样我们就可以真正的来写一个zTree的例子了。

5.zTree例子

我们通过查看zTree的初始化代码,会发现,需要3个参数,其中第一个参数是一个jQuery的对象,第二个参数是zTree的配置对象,具体可以查看zTree的官方文档来看有哪些参数可以设置(http://www.treejs.cn/v3/api.php),第三个参数是用来出事zTree节点的数据。

这里我们直接使用zTree中demo的代码直接复制到demo.component.ts文件中:

import { Component, OnInit } from '@angular/core';
declare var $ : any;
@Component({
 selector: 'app-demo',
 templateUrl: './demo.component.html',
 styleUrls: ['./demo.component.css']
})
export class DemoComponent implements OnInit {
setting = {
  data: {
   simpleData: {
    enable: true
   }
  }
 };
 zNodes = [
  { id: 1, pId: 0, name: "父节点1 - 展开", open: true },
  { id: 11, pId: 1, name: "父节点11 - 折叠" },
  { id: 111, pId: 11, name: "叶子节点111" },
  { id: 112, pId: 11, name: "叶子节点112" },
  { id: 113, pId: 11, name: "叶子节点113" },
  { id: 114, pId: 11, name: "叶子节点114" },
  { id: 12, pId: 1, name: "父节点12 - 折叠" },
  { id: 121, pId: 12, name: "叶子节点121" },
  { id: 122, pId: 12, name: "叶子节点122" },
  { id: 123, pId: 12, name: "叶子节点123" },
  { id: 124, pId: 12, name: "叶子节点124" },
  { id: 13, pId: 1, name: "父节点13 - 没有子节点", isParent: true },
  { id: 2, pId: 0, name: "父节点2 - 折叠" },
  { id: 21, pId: 2, name: "父节点21 - 展开", open: true },
  { id: 211, pId: 21, name: "叶子节点211" },
  { id: 212, pId: 21, name: "叶子节点212" },
  { id: 213, pId: 21, name: "叶子节点213" },
  { id: 214, pId: 21, name: "叶子节点214" },
  { id: 22, pId: 2, name: "父节点22 - 折叠" },
  { id: 221, pId: 22, name: "叶子节点221" },
  { id: 222, pId: 22, name: "叶子节点222" },
  { id: 223, pId: 22, name: "叶子节点223" },
  { id: 224, pId: 22, name: "叶子节点224" },
  { id: 23, pId: 2, name: "父节点23 - 折叠" },
  { id: 231, pId: 23, name: "叶子节点231" },
  { id: 232, pId: 23, name: "叶子节点232" },
  { id: 233, pId: 23, name: "叶子节点233" },
  { id: 234, pId: 23, name: "叶子节点234" },
  { id: 3, pId: 0, name: "父节点3 - 没有子节点", isParent: true }
 ];
 constructor() { 
 }
 ngOnInit() {
  $.fn.zTree($("#ztree"),this.setting,this.zNodes);
 }

}

看上面的代码中, $.fn.zTree($("#ztree"),this.setting,this.zNodes);这里我们用到了jQuery的id选择器,那么我们需要在模板文件demo.component.html中添加一个id为ztree的ul元素

<ul id="ztree"><ul>

至于为什么是ul,可以看zTree的文档,当然你也可以试试别的元素,看能不能实现。

到这里之后,zTree就算被我们集成进来了。效果和对应的项目代码在这里:https://git.oschina.net/zt_zhong/CodeBe

Javascript 相关文章推荐
JQuery的AJAX实现文件下载的小例子
May 15 Javascript
JavaScript动态创建div属性和样式示例代码
Oct 09 Javascript
在javascript中执行任意html代码的方法示例解读
Dec 25 Javascript
CKEditor无法验证的解决方案(js验证+jQuery Validate验证)
May 09 Javascript
JS原型对象的创建方法详解
Jun 16 Javascript
js实现4个方向滚动的球
Mar 06 Javascript
vue-router 权限控制的示例代码
Sep 21 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
Oct 20 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
Nov 24 Javascript
JavaScript代码实现txt文件的上传预览功能
Mar 27 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
Sep 29 Javascript
JS开发前端团队展示控制器来为成员引流
Aug 14 Javascript
详解Angular结合zTree异步加载节点数据
Jan 20 #Javascript
javascript数组拍平方法总结
Jan 20 #Javascript
node.js文件上传重命名以及移动位置的示例代码
Jan 19 #Javascript
详解Node.js模板引擎Jade入门
Jan 19 #Javascript
JS实现碰撞检测的方法分析
Jan 19 #Javascript
angular1配合gulp和bower的使用教程
Jan 19 #Javascript
浏览器调试动态js脚本的方法(图解)
Jan 19 #Javascript
You might like
最简单的PHP程序--记数器
2006/10/09 PHP
php cli 方式 在crotab中运行解决
2010/02/08 PHP
用PHP写的基于Memcache的Queue实现代码
2011/11/27 PHP
PHP上传图片进行等比缩放可增加水印功能
2014/01/13 PHP
php实现的css文件背景图片下载器代码
2014/11/11 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
代码生成器 document.write()
2007/04/15 Javascript
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
Web开发之JavaScript
2012/03/29 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
在vue中通过axios异步使用echarts的方法
2018/01/13 Javascript
webpack之devtool详解
2018/02/10 Javascript
基于Node.js实现压缩和解压缩的方法
2018/02/13 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
2018/03/13 Javascript
小程序如何使用分包加载的实现方法
2019/05/22 Javascript
vue实现五子棋游戏
2020/05/28 Javascript
[43:57]LGD vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
python读取与写入csv格式文件的示例代码
2017/12/16 Python
Python比较2个时间大小的实现方法
2018/04/10 Python
django使用admin站点上传图片的实例
2019/07/28 Python
PyTorch中clone()、detach()及相关扩展详解
2020/12/09 Python
纽约复古灵感的现代珠宝品牌:Lulu Frost
2018/03/03 全球购物
行政助理的职责
2013/11/14 职场文书
食品采购员岗位职责
2014/04/14 职场文书
机械设计及其自动化专业求职信
2014/06/09 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
幽灵公主观后感
2015/06/09 职场文书
篮球拉拉队口号
2015/12/25 职场文书
python 中[0]*2与0*2的区别说明
2021/05/10 Python
Django与数据库交互的实现
2021/06/03 Python
解析高可用Redis服务架构分析与搭建方案
2021/06/20 Redis
Python Django / Flask如何使用Elasticsearch
2022/04/19 Python