Как передать глобально настроенный URL-адрес CDN шаблонам в AngularJS?

0

это должно быть простым, но после обширного поиска в Google я не нашел ответа.

Я использую cloudfront как CDN для своего веб-приложения. Я хотел бы настроить URL-адрес облачного интерфейса на один файл, так как он может измениться в будущем. В настоящее время я пытаюсь передать значение шаблонам, поскольку они используют некоторые изображения через фон стиля CSS. Я выяснил, что одним из решений было бы включить сферу действия в каждый контроллер, но их так много, и в том числе и для всех это сделает код более возможным для ошибок, если он будет забыт.

Итак, это пример кода, который я пробовал:

app.js:

.constant('CDNurl', 'https://xxxxxxxxxxx.cloudfront.net/')

main.js:

$rootScope.CDN = CDNurl;

navbar.html:

<div class="avatar__image" 
ng-style="{'background-image':'url(' + 
$root.CDNurl + currentUser.profileImage+')'}">;

не работает. Если я включу его в контроллер навигатора, он, конечно, работает, но мне нужно передать его по всему миру.

Итак, каков правильный способ сделать это? Настроить что-нибудь и получить его от шаблонов?

Теги:
templates

1 ответ

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

Если у вас есть родительский контроллер в верхней части DOM и в нем вы устанавливаете $rootScope.CDN = CDNurl; , то вы можете получить доступ к CDNurl доступен во всех дочерних представлениях.

Или другим вариантом может быть использование run (я не пробовал это):

var app = angular.module('module', []);

// run blocks
app.run(function($rootScope, CDNurl) {
   $rootScope.CDN = CDNurl;
});
  • 0
    Спасибо, app.run работает отлично :)

Ещё вопросы

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