0
我有一個應用程序,其中包含許多視圖,這些視圖各不相同,而且數量足以證明根據當時哪個視圖處於活動狀態動態加載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 2014-09-05 14:11:10