2017-02-09 54 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.