我正在构建一个功能,它大约是 Angular-UI Bootstrap Modal 提供的功能的 90%。唯一的区别是:
- 模态需要相对于容器 div 定位(我已经使用 处理了样式方面
windowClass
)
问题在于对call的$modalStack service
硬编码body.append
,如下所示:
body.append(modalDomEl)
body.addClass(OPENED_MODAL_CLASS)
我首先简单地复制/粘贴open
每个服务上的方法(重命名为 openWithinElement),然后修改我需要使其工作的内容。如您所见,如果您运行该应用程序,它会在未定义 $q 依赖项时引发错误。好吧,我想这是有道理的。
接下来,我将依赖项添加到provider.decorator
方法中,从而绕过了所有依赖项错误。但是后来我遇到了另一个错误,function getTemplatePromise is undefined
......当然它没有定义。这是服务的内部方法。
那是我真正陷入困境的时候。如果不重新定义服务中的所有私有函数/对象/道具,似乎不可能用新方法装饰此服务。
是这样吗?
[编辑添加] 我最终用一个updateParentElement
方法装饰了服务,然后将模式移动到传入的元素,该元素在 .opened 承诺中执行。它很hacky,但是可以,但是我希望装饰器缺少一些东西。[/编辑]