Я хочу загрузить определенный файл CSS только тогда, когда пользователь обращается к представлению contact.html
на моем приложении/сайте AngularJS. Я нашел этот ответ, который почти имел смысл для меня Как включить просмотр/частичный конкретный стиль в AngularJS Принятый ответ charlietfl гласит:
Может быть добавлена новая таблица стилей, которая будет находиться в пределах
$routeProvider
. Для простота использования строки, но также может создать новый элемент ссылки, или создать службу для таблиц стилей/* check if already exists first - note ID used on link element*/ /* could also track within scope object*/ if( !angular.element('link#myViewName').length){ angular.element('head').append('<link id="myViewName" href="myViewName.css" rel="stylesheet">'); }
Самое большое преимущество prelaoding на странице - любые фоновые изображения будут уже существует, и меньше lieklyhood of
FOUC
Проблема в том, что я не знаю точно, где в моем $routeProvider
добавить код. charlietfl упоминает, куда помещать его в комментарий, который читает
нет, если когда маршрут не был вызван. Может помещать этот код в контрольный вызов контроллера, когда в пределах маршрутаProvider, или, возможно, в пределах ответного вызова разрешения, который скорее всего срабатывает раньше
Я изменил свой $routeProvider
по рекомендации. Я добавил resolve
в объект, следующий за .when('/contact'
. Вот мой код
angular.module('maxmythicApp', ['ngResponsiveImages'])
.config(function ($locationProvider, $routeProvider) {
$locationProvider.html5Mode(true);
$locationProvider.hashPrefix = '!';
$routeProvider
.when('/', {
templateUrl: '/views/design.html',
controller: 'MainCtrl'
})
.when('/design', {
templateUrl: '/views/design.html',
controller: 'MainCtrl'
})
.when('/about', {
templateUrl: '/views/about.html',
controller: 'MainCtrl'
})
.when('/contact', {
templateUrl: '/views/contact.html',
controller: 'MainCtrl',
resolve:
if( !angular.element('link#myViewName').length){
angular.element('head').append('<link id="myViewName" href="myViewName.css" rel="stylesheet">');
}
})
.otherwise({
redirectTo: '/'
});
});
Будет ли это работать?