Angular2如何整合其他插件


Angular2如何整合其他插件
我是钟钟 发表于1个月前
 
 

效果和对应的项目代码在这里: https://git.oschina.net/zt_zhong/CodeBe 请给我加个星,谢谢。

前言: 现在有很多朋友在接触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 效果图是这样的: 输入图片说明

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是否成功引入:

输入图片说明 你会看到,angular-cli已经帮我们生成了必要的文件,然后我们打开demo.component.ts文件,在import语句后面添加以下内容:

declare var $ : any;

这句代码表示我们声明一个$的变量,类型是any任意类型。

接着我们在ngOnInit方法中,使用console.log($);来输出$。

添加完成之后的,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 {

  constructor() { }

  ngOnInit() {
    console.log($);
  }

}

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

输入图片说明 会发现输出的就是我们平时使用到的jquery对象$。到此,我们就算成功引入jQuery到项目中了。

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

  <link rel="stylesheet" type="text/css" href="./assets/zTree/css/metroStyle/metroStyle.css">
  <script src="./assets/zTree/js/jquery.ztree.core.min.js"></script>

这样之后,我们就可以测试zTree是否正常引入进来了,我们在demo.component.ts文件中的ngOnInit方法中添加以下代码:

console.log($.fn.zTree);

查看控制台会发现,以下输出: 输入图片说明 在输出的内容我们可以看到,有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的文档,当然你也可以试试别的元素,看能不能实现。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值