2017-02-09 71 views
0

我需要配置使用angular-bowser进行设备检测时,为移动设备禁用角引导工具提示(uibTooltip)如何在配置功能中访问服务或访问服务中的服务提供商

这可以简单地这样做:

isMobile = _bowser.mobile 
$uibTooltipProvider.options = { trigger: isMobile ? "none" : "mouseenter" } 

问题:$uibTooltipProvider提供商bowser服务

我必须使用$uibTooltipProviderconfig功能,而我不能在config功能使用bowser服务。而无论是我可以在run功能使用$uibTooltipProvider在那里我可以使用bowser

我已经尝试重写$获取功能,因为他们认为here“ontouchstart”事件在$窗口并不适用于平板电脑,我想要保持工具提示启用。

有什么办法可以解决这个问题吗?

回答

0

我终于决定在运行时注入一个小的css修改。我有以下三个选项:

使用hack on GitHub:我不喜欢的事实,为了使它工作,我不得不经验(通过放置一个突破点),找出哪些是实际的服务注入到uibTooltipProvider的$ get函数中。 (见有在GitHub的线程注入的服务和那些我之间的差异注入(see code snippet)

2.添加加油车库和静态地使用它:我不喜欢这样的选择,因为我们已经使用角库巴作为我们DeviceDetector服务的依赖,所以我们将使用相同的库两次:一个静态配置在运行时提示选项,一个用于一切

注入少量的CSS修改(我选择的选项):

public disableTooltipsForTouchScreen(): void { if (this._deviceDetector.isMobile() || this._deviceDetector.isTablet()) { let styleSheet = document.createElement("style"); styleSheet["innerHTML"] = ".tooltip { display: none; }"; document.body.appendChild(styleSheet); } }

如果我们需要对bootstrap-tooltip配置有最好的控制,那么我会考虑选项2.