Я хочу ввести провайдера местоположения в константу модуля, что невозможно
app.constant('foo', {
hostName: <<$location.$$root>> //which is not possible.
}
поэтому я пробовал это:
app.provider('foo', ['$locationProvider', function($locationProvider) {
this.data = {
hostName: $locationProvider.$$root + ":1337"
};
this.$get = function() {
return this.data;
};
}]);
Но опять же это не сработало, как $locationProvider.$$root
не определен.
Любое решение /s?
Константы Module
в AngularJS предназначены для регистрации значения/объекта, к которым может обратиться Provider
, поэтому в основном вы не можете пойти другим путем, пытаясь использовать службы Provider
в своей декларации Constant
.
Взломом для такой ситуации было бы вручную извлечь значение, которое вы хотите вытащить, т.е. Местоположение корневой страницы, из объекта JavaScript window.location
:
app.constant('foo', {
hostName: window.location.protocol + window.location.host // .host gives you the page hostname appended with the port used to render the page
}
Просто помните, что обычные объекты JavaScript, предоставляемые большинством веб-браузеров, все еще существуют, когда AngularJS не может выполнить эту работу.