從服務/控制器獲取$locationProvider
配置參數的正確方法是什麼?如果做一個簡單的依賴注入function ($locationProvider)
,我得到以下錯誤:
Unknown Provider : $locationProviderProvider <- $locationProvider <- myCtrl
從服務/控制器獲取$locationProvider
配置參數的正確方法是什麼?如果做一個簡單的依賴注入function ($locationProvider)
,我得到以下錯誤:
Unknown Provider : $locationProviderProvider <- $locationProvider <- myCtrl
我也得到了這個錯誤。
您可以將$location
注入控制器,但是不是 a $locationProvider
。
相反,$locationProvider
可以注入config
方法:
var app = angular.module("myApp", []);
app.config(function($locationProvider) {
$locationProvider.html5Mode(true);
});
app.controller("myCtrl", function($location) {
$location.path("/some/path");
});
而且因爲我做了這個額外的錯誤:它不只是你應該添加一個app.config
位,還記得從刪除$locationProvider
控制器參數,否則你會一直得到這個錯誤。
如果我理解正確,提供程序配置會在應用程序生命週期的配置階段發生,而不是運行階段。因此這種分離。 You can read a bit more about these phases here.
我懷疑這條錯誤消息的原因是,當你注入$foo
到控制器,它會尋找一個$fooProvider
。因此,當我們注入$locationProvider
時,它尋找$locationProviderProvider
。
我接受了你的答案,但是我相信你的標題編輯改變了問題本身 - 我詢問如何在運行時從控制器配置$ location配置。實際的答案是,這是不可能的。 –
梅爾 - 呃。如果你不能在控制器中配置它,那麼你應該怎麼做呢? (男孩,我討厭Angular ...) –
我懷疑它是可注射的,因爲它用於注入$ location服務的一個實例。有getter/setter散列([hash]);方法在$ location服務中,它可以幫助你做任何你想做的事情。如果沒有,你應該解釋你使用$ locationProvider的hashPrefix的意圖。 –
@CemOzer我正在做一個反向Url服務(即從路由名稱生成一個url),所以我需要知道如何配置位置服務是完全通用的。 –
我不能說我理解你的「從路由名稱生成URL」的意圖,你可以舉個案例研究。 –