您好,登錄后才能下訂單哦!
前言:現在有很多朋友在接觸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是否成功引入:
![輸入圖片說明](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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。