Conditionnellement à rendu css dans le html de la tête
Je suis en train d'ajouter dynamiquement des css de mon code html tête à l'aide de angular js. Voici un exemple de code
<div ng-repeat="stylesheet in stylesheets">
<link href="/myapp/{{stylesheet.href}}" type="{{stylesheet.type}}" rel="stylesheet" media="{{stylesheet.media}}" title="{{stylesheet.title}}" />
</div>
Ce code fonctionne comme prévu, mais lorsque le navigateur charge la page, il tente d'extraire des ressources css avec raw angularjs modèles et je vois "erreur" 404 not found" dans l'onglet réseau de firebug.
Eg: request http://localhost:8080/myapp/%7B%7Bstylesheet.href%7D%7D, status 404
Lorsque la page est complètement chargée, il ne la substitution des valeurs de modèle et de charges de la bonne css.
Est-il un moyen d'éviter l'erreur 404 et faire le charger le css après angularjs traitement?
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser ng-href au lieu de href.
Exemple
J'ai fait un AngularJS service pour utiliser facilement le @Artem solution.
C'est ici sur GitHub.
Il y a une autre option à l'aide de $route.résoudre et de promesses. Cela permettra d'attendre jusqu'à ce que le CSS est chargé non seulement ajouté à l'en-tête (après que le navigateur commence juste de récupérer le fichier et en fonction CSS taille peut causer la page de redistribution).
Service de la mise en œuvre
Vous pouvez ajouter un délai d'attente à l'aide de tente si c'est quelque chose que vous souhaitez inclure.
Découvrez ce post pour plus de détails:https://medium.com/angularjs-meetup-south-london/angular-dynamically-injecting-css-file-using-route-resolve-and-promises-7bfcb8ccd05b
J'ai créé un exemple très simple de comment faire un conditionaly css plus
Pour tous ceux qui souhaitent créer véritablement CSS dynamique lors de l'exécution avec AngularJS c'est ce que j'ai utilisé.
index.html
<head>
<style type="text/css" ng-bind-html="styles"></style>
</head>
cssService
this.$rootScope.myStyles = ".test { color : red; }";
C'est juste un exemple, il peut être préférable pour vous de mettre les styles dans un indexController si vous en avez un et le garder hors de la
$rootScope