У меня есть приложение со многими видами, которые разнообразны и достаточно многочисленны, чтобы оправдывать динамическую загрузку файлов CSS, основываясь на том, какой вид активен в то время.Является ли это подходящим использованием услуги AngularJS?
Я изучил различные способы динамического «загрузки» CSS-файлов с угловым и даже нашел плагин, который работал, хотя он был довольно неуклюжим в своей реализации.
Я провел некоторое исследование на родном пути JS, чтобы сделать это, и решил реализовать его более «угловым способом». Я вставляю службу ниже в контроллер маршрутов.
Правильно ли используется мой метод реализации (с использованием сервиса)? Если нет, то в чем правильное место для логики такого рода?
HTML:
<head>
...
<link id="library-css" href="~/Styles/libraryCSS" rel="stylesheet" type="text/css" disabled />
<link id="results-css" href="~/Styles/resultsCSS" rel="stylesheet" type="text/css" disabled />
...
</head>
AngularJS Услуги:
myServices.service("CSSLoader", [function() {
var cssLinks = {},
linkToActivate = {};
(function init() {
//loading the <link> elements into the cssLinks object for later retrieval
cssLinks = {
library: document.getElementById("library-css"),
results: document.getElementById("results-css")
};
})();
this.loadCSS = function (cssReference, retainPreviouslyLoadedCSS) {
if (!cssReference) { throw "CSS Link must be provided.";}
if (!retainPreviouslyLoadedCSS) {
//first disables any links that are active
for (var cnt in cssLinks) {
cssLinks[cnt].disabled = true;
}
}
linkToActivate = cssLinks[cssReference];
if (!linkToActivate) { throw "CSS Link, (" + cssReference + "), that was provided cannot be found."; }
linkToActivate.disabled = false;
};
}]);
Спасибо!
Мне нравится это решение, это _even more_ angular! благодаря – tedwards947