Лучший способ включить конкретные файлы css/js с помощью ui-router

Я ищу лучший способ управления вложениями css файлов,

Я нашел отличный ответ: qaru.site/info/6148/... Но это работает только с rootProvider.

Итак, как сделать что-то подобное с помощью stateProvider:

app.config(['$routeProvider', function($routeProvider){
    $routeProvider
        .when('/some/route/1', {
            templateUrl: 'partials/partial1.html', 
            controller: 'Partial1Ctrl',
            css: 'css/partial1.css'
        })
        .when('/some/route/2', {
            templateUrl: 'partials/partial2.html',
            controller: 'Partial2Ctrl'
        })
        .when('/some/route/3', {
            templateUrl: 'partials/partial3.html',
            controller: 'Partial3Ctrl',
            css: ['css/partial3_1.css','css/partial3_2.css']
        })
}]);

Большое спасибо:)

Ответ 1

Этот модуль может помочь вам: https://github.com/manuelmazzuola/angular-ui-router-styles

  • Установите его с помощью Bower через bower install angular-ui-router-styles --save

  • Убедитесь, что ваш прикладной модуль определяет uiRouterStyles как зависимость: angular.module('myApplication', ['uiRouterStyles'])

  • Добавить css файл относительный путь к объекту данных состояния

.state('state1', {
    url: '/state',
    controller: 'StateCtrl',
    templateUrl: 'views/my-template.html',
    data: {
        css: 'styles/some-overrides.css'
    }
})

Ответ 2

Вы также можете использовать oclazyload для этой цели. Он работает с файлами .js и .css. Из него документация:

angular.module('MyModule', ['pascalprecht.translate', [
  '/components/TestModule/TestModule.js',
  '/components/bootstrap/css/bootstrap.css',
  '/components/bootstrap/js/bootstrap.js'
]]);

Для получения дополнительной информации перейдите по ссылке ниже:

oclazyload - di