我正在尝试创建一个与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,因为我想重复使用这个多个地方。编写指令可能是最好的方法。 –