簡體   English   中英

如何在配置函數中訪問服務或訪問服務中的提供程序

[英]How can I access a service in config function or access a provider inside a service

我需要配置角度引導程序工具提示(uibTooltip)以在使用angular-bowser進行設備檢測時為移動設備禁用。

這可以通過以下簡單的方法完成:

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

問題: $uibTooltipProvider提供者bowser服務

我必須使用$uibTooltipProviderconfig功能,而我不能使用bowser在服務config功能。 而且,無論我可以用$uibTooltipProviderrun功能,我可以用bowser

我已經嘗試重寫得到$功能,因為他們認為在這里 ,但“ontouchstart”事件在$窗口不辦理,我想保持啟用提示葯片。

有什么辦法可以解決這個問題嗎?

我最終決定在運行時注入一個小的CSS修改。 我有以下三種選擇:

1. 在GitHub上使用該hack :我不喜歡這樣一個事實,為了使其能夠正常工作,我必須憑經驗(通過設置一個斷點)來找出注入uibTooltipProvider的$ get函數中的實際服務是什么。 (請參閱在github線程中注入的服務與我必須注入的服務之間的區別(請參見代碼段)

2.添加Bowser庫並靜態使用它:我不喜歡該選項,因為我們已經將angular-bowser用作DeviceDetector服務的依賴項,因此我們將使用相同的庫兩次:一個靜態地配置工具提示選項在運行時進行其他所有操作。

3.注入一個小的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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM