當前位置:成語大全網 - 書法字典 - 為什麽使用AngularJS指令?

為什麽使用AngularJS指令?

使用過AngularJS的朋友應該對它的使用說明最感興趣。目前市場上只有AngularJS具有前端框架中自定義指令的功能,AngularJS是唯壹提供Web應用程序可重用性的框架。

目前,有許多JavaScript產品為Web開發人員提供插件。例如,Bootstrap是壹個流行的前端開發工具包,它提供了樣式和JavaScript插件。然而,當在Booostrap中使用插件時,開發人員必須切換到JavaScript。編寫jQuery代碼來激活插件的模式。盡管jQuery代碼編寫起來非常簡單,但它必須與HTML同步,這是壹個繁瑣且容易出錯的過程。

AngularJS主頁展示了壹個在Bootstrap中實現Tab功能的簡單示例,可以方便地添加到頁面中,使用方法和ul標簽壹樣簡單。HTML代碼如下所示:

復制代碼

引導選項卡組件

這是第壹個選項卡的內容。

這是第二個選項卡的內容。

復制代碼

JavaScript代碼如下:

復制代碼

angular . module(‘組件‘,【】)。

指令(tabs,function(){

返回{

限制:“E”,

沒錯,

範圍:{},

控制器:【“$scope“,函數($ scope){

var panes = $ scope . panes =【】;

$ scope . select = function(pane ){

angular.forEach(窗格,函數(窗格){

pane.selected = false

});

pane.selected = true

}

this . add pane = function(pane ){

if(panes . length = = 0)$ scope . select(pane);

panes.push(窗格);

}

}],

模板:

'

+

'

+

'

+

{ { pane . title } }‘+

'

+

'

+

'

+

'

,

替換:真

};

}).

指令(pane,function(){

返回{

要求:'^tabs',

限制:“E”,

沒錯,

範圍:{標題:‘@‘},

鏈接:函數(範圍、元素、屬性、選項卡ctrl ){

tabsCtrl.addPane(範圍);

},

模板:

'

+

'

,

替換:真

};

})

復制代碼

您可以從以下鏈接檢查效果:ment(默認值為“a”)。我們將更加關註屬性——如何創建UI元素。

作用域:創建指令的作用域,作用域作為屬性標簽在指令中傳遞。範圍是創建可重用指令的必要條件,每條指令(無論它在嵌套指令中處於哪個級別)都有其唯壹的範圍,該範圍不依賴於父範圍。範圍對象定義變量的名稱和類型。上述示例創建了三個範圍變量。

名稱:“@”(值傳遞,單向綁定):

“@”符號表示變量是壹個值傳遞。指令檢索從父範圍傳遞的字符串中的值。指令可以使用該值但不能修改,它是最常用的變量。

金額:“=”(引用,雙向綁定)

符號“=”表示變量是通過引用傳遞的。指令在主範圍內檢索引用值。值可以是任何類型,包括復合對象和數組。指令可以更改父作用域中的值,因此當指令需要修改父作用域中的值時,我們需要使用此類型。

保存:“& amp(表情)

“& amp符號表示變量是在父範圍內激活的表達式。它允許指令執行比修改值更高級的操作。

模板:替換原始模板中標簽的字符串。替換功能將用新值替換所有舊元素。註意template是如何使用Scope中定義的變量的。這允許您創建宏樣式。無需編寫任何額外的代碼。Replace:指示是替換原始標記中的值還是追加原始標記中的值。默認值為false,在這種情況下將保留原始標記。

Transclude:指示自定義指令是否復制原始標記中的內容。例如,前面顯示的“tab”指令將transclude設置為true,因為tab元素包含其他HTML元素。“dateInput”指令在初始化時需要為空,因此需要將transclude設置為false。

鏈接:這種方法在教學中起著重要作用。它負責執行DOM操作和註冊事件偵聽器。link方法包含以下參數:

範圍:對指令範圍的引用。範圍變量在初始化時未定義,link方法將註冊監視器值更改事件。

元素:對包含指令的DOM元素的引用。link方法壹般由jQuery的實例操作(如果沒有加載jQuery,也可以使用Angular的jqLite)。

控制器:當有嵌套指令時使用。該參數的作用是提供子指令對父指令的引用,並允許指令之間的交互。tab指令是使用此參數的典型示例:/powertoolsteam/GBE7N/1/

請註意,當調用link方法時,通過值(“@”)傳遞的範圍變量將不會被初始化,但會在指令生命周期的另壹個時間點進行初始化。如果您需要偵聽此事件,可以使用範圍。$watch方法。