目前,有許多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方法。