Angular2整合其他插件的方法
前言:現(xiàn)在有很多朋友在接觸Angular2的時(shí)候,總是不可避免的會(huì)使用一些其他的第3方的插件,而這些插件可能都是基于jQuery的,而且也沒有對(duì)應(yīng)的angular2的版本,這里我就來(lái)講解一下,在這種情況下,如何整合第3方的jQuery插件。我們以Angular2整合zTree為例來(lái)說(shuō)明整合的思路及過(guò)程。
zTree官方網(wǎng)站:http://www.treejs.cn/v3/main.php#_zTreeInfo
1.一般我在想要將像zTree這種插件集成進(jìn)來(lái)的時(shí)候,我會(huì)先直接去看zTree它們的在線例子,比如說(shuō)這個(gè)例子:
https://github.com/zTree/zTree_v3/blob/master/demo/cn/super/metro.html
效果圖是這樣的:
2.看到這個(gè)效果之后,我們?cè)賮?lái)看這個(gè)例子的代碼:關(guān)鍵代碼在這里:
$(document).ready(function(){ $.fn.zTree.init($("#treeDemo"), setting, zNodes); });
這段代碼中使用了jQuery,對(duì)吧,那我們要集成zTree進(jìn)來(lái)的話,就必須先把jQuery引入進(jìn)來(lái)。那我們先不管怎么來(lái)集成zTree,我們先來(lái)解決如何將jQuery引入進(jìn)來(lái)的問(wèn)題:
3.引入jQuery到angular2項(xiàng)目中,當(dāng)然,如果你使用的插件沒有依賴jQuery的話可以跳過(guò)這個(gè)步驟,不過(guò)一般第3方插件都依賴它,對(duì)吧。引入jQuery的話,就比較簡(jiǎn)單,只要在index.html文件中引入進(jìn)來(lái)就可以了:
<script src="node_modules/jquery/dist/jquery.min.js"></script>
引入進(jìn)來(lái)之后,我們需要測(cè)試下,jQuery是否成功引入進(jìn)來(lái)。我們使用ng g c demo命令生成一個(gè)組件來(lái)測(cè)試jQuery是否成功引入:
題")你會(huì)看到,angular-cli已經(jīng)幫我們生成了必要的文件,然后我們打開demo.component.ts文件,在import語(yǔ)句后面添加以下內(nèi)容:
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($);} }
上面代碼添加完成之后,查看瀏覽器的控制臺(tái)輸出:
題")會(huì)發(fā)現(xiàn)輸出的就是我們平時(shí)使用到的jquery對(duì)象$。到此,我們就算成功引入jQuery到項(xiàng)目中了。
4.將zTree的js庫(kù)和css庫(kù)引入到項(xiàng)目中,在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>```這樣之后,我們就可以測(cè)試zTree是否正常引入進(jìn)來(lái)了,我們?cè)赿emo.component.ts文件中的ngOnInit方法中添加以下代碼:```console.log($.fn.zTree);```查看控制臺(tái)會(huì)發(fā)現(xiàn),以下輸出:題")在輸出的內(nèi)容我們可以看到,有zTree用來(lái)初始化的init方法,這樣我們就可以真正的來(lái)寫一個(gè)zTree的例子了。
5.zTree例子
我們通過(guò)查看zTree的初始化代碼,會(huì)發(fā)現(xiàn),需要3個(gè)參數(shù),其中第一個(gè)參數(shù)是一個(gè)jQuery的對(duì)象,第二個(gè)參數(shù)是zTree的配置對(duì)象,具體可以查看zTree的官方文檔來(lái)看有哪些參數(shù)可以設(shè)置(http://www.treejs.cn/v3/api.php),第三個(gè)參數(shù)是用來(lái)出事zTree節(jié)點(diǎn)的數(shù)據(jù)。
這里我們直接使用zTree中demo的代碼直接復(fù)制到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: "父節(jié)點(diǎn)1 - 展開", open: true }, { id: 11, pId: 1, name: "父節(jié)點(diǎn)11 - 折疊" }, { id: 111, pId: 11, name: "葉子節(jié)點(diǎn)111" }, { id: 112, pId: 11, name: "葉子節(jié)點(diǎn)112" }, { id: 113, pId: 11, name: "葉子節(jié)點(diǎn)113" }, { id: 114, pId: 11, name: "葉子節(jié)點(diǎn)114" }, { id: 12, pId: 1, name: "父節(jié)點(diǎn)12 - 折疊" }, { id: 121, pId: 12, name: "葉子節(jié)點(diǎn)121" }, { id: 122, pId: 12, name: "葉子節(jié)點(diǎn)122" }, { id: 123, pId: 12, name: "葉子節(jié)點(diǎn)123" }, { id: 124, pId: 12, name: "葉子節(jié)點(diǎn)124" }, { id: 13, pId: 1, name: "父節(jié)點(diǎn)13 - 沒有子節(jié)點(diǎn)", isParent: true }, { id: 2, pId: 0, name: "父節(jié)點(diǎn)2 - 折疊" }, { id: 21, pId: 2, name: "父節(jié)點(diǎn)21 - 展開", open: true }, { id: 211, pId: 21, name: "葉子節(jié)點(diǎn)211" }, { id: 212, pId: 21, name: "葉子節(jié)點(diǎn)212" }, { id: 213, pId: 21, name: "葉子節(jié)點(diǎn)213" }, { id: 214, pId: 21, name: "葉子節(jié)點(diǎn)214" }, { id: 22, pId: 2, name: "父節(jié)點(diǎn)22 - 折疊" }, { id: 221, pId: 22, name: "葉子節(jié)點(diǎn)221" }, { id: 222, pId: 22, name: "葉子節(jié)點(diǎn)222" }, { id: 223, pId: 22, name: "葉子節(jié)點(diǎn)223" }, { id: 224, pId: 22, name: "葉子節(jié)點(diǎn)224" }, { id: 23, pId: 2, name: "父節(jié)點(diǎn)23 - 折疊" }, { id: 231, pId: 23, name: "葉子節(jié)點(diǎn)231" }, { id: 232, pId: 23, name: "葉子節(jié)點(diǎn)232" }, { id: 233, pId: 23, name: "葉子節(jié)點(diǎn)233" }, { id: 234, pId: 23, name: "葉子節(jié)點(diǎn)234" }, { id: 3, pId: 0, name: "父節(jié)點(diǎn)3 - 沒有子節(jié)點(diǎn)", isParent: true } ]; constructor() { } ngOnInit() { $.fn.zTree($("#ztree"),this.setting,this.zNodes); } }
看上面的代碼中, $.fn.zTree($("#ztree"),this.setting,this.zNodes);這里我們用到了jQuery的id選擇器,那么我們需要在模板文件demo.component.html中添加一個(gè)id為ztree的ul元素
<ul id="ztree"><ul>
至于為什么是ul,可以看zTree的文檔,當(dāng)然你也可以試試別的元素,看能不能實(shí)現(xiàn)。
到這里之后,zTree就算被我們集成進(jìn)來(lái)了。效果和對(duì)應(yīng)的項(xiàng)目代碼在這里:https://git.oschina.net/zt_zhong/CodeBe
- Angular實(shí)現(xiàn)的進(jìn)度條功能示例
- AngularJS實(shí)現(xiàn)進(jìn)度條功能示例
- Spring Boot+AngularJS+BootStrap實(shí)現(xiàn)進(jìn)度條示例代碼
- 如何在Angular2中使用jQuery及其插件的方法
- AngularJS中如何使用echart插件示例詳解
- Angular4項(xiàng)目中添加i18n國(guó)際化插件ngx-translate的步驟詳解
- 如何在AngularJs中調(diào)用第三方插件庫(kù)
- Angular5中調(diào)用第三方j(luò)s插件的方法
- 詳解在Angular項(xiàng)目中添加插件ng-bootstrap
- angular4+百分比進(jìn)度顯示插件用法示例
相關(guān)文章
Commands Queries設(shè)計(jì)模式提高Angular應(yīng)用性能及可維護(hù)性
在Angular應(yīng)用開發(fā)領(lǐng)域,Commands and Queries 設(shè)計(jì)模式是一個(gè)關(guān)鍵的概念,它有助于有效地管理應(yīng)用程序的狀態(tài)和與后端的交互,本文將深入探討這一設(shè)計(jì)模式的核心要點(diǎn),并通過(guò)實(shí)際示例來(lái)加以說(shuō)明2023-10-10實(shí)踐中學(xué)習(xí)AngularJS表單
表單是最常用的一種組建。在Angular.js中,其實(shí)并沒有單獨(dú)的為表單添加多少特殊功能。但是,利用Angular.js框架本身的特點(diǎn),可以更友好的呈現(xiàn)表單。下面將介紹幾種常用的功能在Angular中是如何巧妙實(shí)現(xiàn)的2016-03-03Angular的Bootstrap(引導(dǎo))和Compiler(編譯)機(jī)制
這篇文章主要介紹了Angular的Bootstrap(引導(dǎo))和Compiler(編譯)機(jī)制的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06對(duì)angularjs框架下controller間的傳值方法詳解
今天小編就為大家分享一篇對(duì)angularjs框架下controller間的傳值方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10AngularJs根據(jù)訪問(wèn)的頁(yè)面動(dòng)態(tài)加載Controller的解決方案
這篇文章主要介紹了AngularJs根據(jù)訪問(wèn)的頁(yè)面動(dòng)態(tài)加載Controller的解決方案,需要的朋友可以參考下2015-02-02Angular.js基礎(chǔ)學(xué)習(xí)之初始化
這篇文章主要介紹了Angular.js基礎(chǔ)學(xué)習(xí)之初始化的相關(guān)資料,AngularJS 啟動(dòng)有兩種方式,一種是綁定初始化,自動(dòng)加載,另外一種是手動(dòng)初始化,文中介紹的很詳細(xì),需要的朋友可以參考下。2017-03-03