首頁 >web前端 >js教程 >使用Angular2如何整合插件(詳細教學)

使用Angular2如何整合插件(詳細教學)

亚连
亚连原創
2018-06-11 14:14:541384瀏覽

本文給大家詳細分析了Angular2整合其他插件的方法,有興趣的朋友學習下。

前言:現在有很多朋友在接觸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檔中引入就可以了:

引入進來之後,我們需要測試下,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檔案中我們加入以下程式碼:

"這樣之後,我們就可以測試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的文檔,當然你也可以試試別的元素,看能不能實作。

上面是我整理給大家的,希望今後會對大家有幫助。

相關文章:

在微信中如何使用js喚起App ?

在node.js中如何使用http模組

#Javascript除錯指令有哪些?

詳細解讀在nodeJs中有關檔案系統與流

#在Node.js中子程序有哪些應用場景

在node中有關child_process模組(詳細教學)

以上是使用Angular2如何整合插件(詳細教學)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn