Angular - Внедрение locationProvider в константу приложения

0

Я хочу ввести провайдера местоположения в константу модуля, что невозможно

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?

Теги:

1 ответ

2
Лучший ответ

Константы 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 не может выполнить эту работу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню