это должно быть простым, но после обширного поиска в 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+')'}">;
не работает. Если я включу его в контроллер навигатора, он, конечно, работает, но мне нужно передать его по всему миру.
Итак, каков правильный способ сделать это? Настроить что-нибудь и получить его от шаблонов?
Если у вас есть родительский контроллер в верхней части DOM и в нем вы устанавливаете $rootScope.CDN = CDNurl;
, то вы можете получить доступ к CDNurl
доступен во всех дочерних представлениях.
Или другим вариантом может быть использование run
(я не пробовал это):
var app = angular.module('module', []);
// run blocks
app.run(function($rootScope, CDNurl) {
$rootScope.CDN = CDNurl;
});