我正在嘗試創建一個與ui.bootstrap庫中提供的模塊非常相似的自定義模塊。我希望能夠通過服務打開和關閉它,並通過一些選項。問題在於,我對角度有點新,而且我不完全確定這應該如何完成。在Angular JS中創建自定義模塊的一般步驟
我讀過關於如何創建一個自定義模塊(這是一個偉大的post),我知道我需要一個服務以編程方式打開它,但在查看源代碼我有些迷失。我假設我需要做到以下幾點:
- 構建一個元素追加到身體
- 該元素應該有一個指令,將觸發...東西或其他服務?
但是,當我給了一個嘗試,指令並沒有實際上連接。例如:
angular.module("ui.sidePanel", [])
.service("$sidePanel", function($rootScope, $document){
return{
open: function(options){
angular.element($document[0].body).append("<side-panel></side-panel>");
console.log('Boop');
}
}
})
.directive("sidePanel", function(){
return {
restrict: "E",
link: function(scope, element, attrs){
console.log('Side Panel');
}
}
})
永遠不會記錄「側面板」。
幾個音符。首先,用一個$前綴命名你自己的東西是個不好的習慣 - 這是保留給角色核心的東西。其次,您很可能不希望繼續追加DOM節點,因爲intead會根據狀態寫入由指令控制的DOM節點和ng-hide/ng-show。最後,在你的例子中,沒有什麼叫$ sidePanel.open() –
@MattPileggi我想你的權利,我只是想通過ui.bootstrap的例子。你完全正確,我不想繼續附加DOM節點,但是我希望能夠更加優雅一點,然後使用ng-show/ng-hide,因爲我想重複使用這個多個地方。編寫指令可能是最好的方法。 –