AngularJS: Comment faire angulaire de script de charge à l'intérieur de ng-inclure?
Hey, je suis la construction d'une page web angulaire. Le problème, c'est qu'il y a des choses déjà construire sans angulaire et je dois les inclure ainsi
Le problème est présent.
J'ai quelque chose comme cela dans mon main.html:
<ngInclude src="partial.html">
</ngInclude>
Et mon partial.html a quelque chose comme ce
<h2> heading 1 <h2>
<script type="text/javascript" src="static/js/partial.js">
</script>
Et mon partial.js n'a rien à voir avec angularjs. nginclude fonctionne et je peux voir le code html, mais je ne peux pas voir le fichier javascript en cours de chargement à tous. Je sais comment utiliser firebug/chrome-dev-outil, mais je ne peux même pas voir le réseau objet de la demande. Ce que je fais mal?
Je connait angulaire a une signification particulière à la balise script. Puis-je le remplacer?
Vous devez vous connecter pour publier un commentaire.
La accepté de répondre ne fonctionne pas à partir de 1.2.0-rc1+ (Github problème).
Voici une solution rapide créé par endorama:
Simplement ajouter ce fichier, charger
ngLoadScript
module de l'application de la dépendance et de l'utilisationtype="text/javascript-lazy"
type de script vous permettant de charger paresseusement dans les partiels:Réponse courte: AngularJS ("jqlite") ne prend pas en charge cette. Inclure jQuery dans votre page (avant y compris Angulaire), et cela devrait fonctionner. Voir https://groups.google.com/d/topic/angular/H4haaMePJU0/discussion
J'ai essayé neemzy de l'approche, mais il ne fonctionne pas pour moi en utilisant 1.2.0-rc.3. La balise de script à insérer dans le DOM, mais le javascript chemin ne serait pas chargé. Je soupçonne que c'était parce que le javascript j'ai essayé de charger a partir d'un domaine différent ou du protocole.
J'ai donc pris une approche différente, et c'est ce que j'ai trouvé, à l'aide de google maps, par exemple: (Gist)
J'espère que c'est utile pour quelqu'un.
Cela ne fonctionne plus à partir de 1.2.0-rc1. Voir ce problème pour en savoir plus sur elle, dans lequel j'ai posté un commentaire décrivant une solution de rechange rapide. Je vais le partager ici :
Pas la meilleure solution, mais bon, ce n'est pas de mettre les balises de script dans les vues suivantes. Dans mon cas, j'ai à faire, c'est pour utiliser Facebook/Twitter/etc. les widgets.
J'ai utilisé cette méthode pour charger un fichier de script dynamiquement (à l'intérieur d'un contrôleur).
ocLazyLoad permet paresseusement scripts de chargement dans les modèles/vues via des routeurs (par exemple, l'interface utilisateur du routeur). Voici une sniplet
Pour charger dynamiquement recaptcha à partir d'un
ui-view
j'utilise la méthode suivante:Dans
application.js
:Dans
myPartial.client.view.html
:$(element)
pourquoi avez-vous besoin$()
de la syntaxe. à partir de la sja docs "Tous les élément références Angulaires sont toujours emballés avec jQuery ou jqLite" (comme par exemple l'argument de l'élément dans une directive de compilation / fonction de lien) - donc, de part et d'autre de mes expériences, je m'attendais à vous d'utiliser 'élément.append (...) " - bien que j'ai fini par ne pas être ce que je pourrais utiliser à la fin lors de l'essai j'étais confus quand j'ai vu la partie, et n'a pas fonctionné pour moi quand j'ai essayé seulement travaillé avec le 'élément.append' syntaxeMalheureusement toutes les réponses dans ce post n'a pas fonctionné pour moi. J'ai gardé l'obtention d'erreur suivant.
J'ai découvert que ce qui se passe si vous utilisez un 3ème partie widgets (demandforce dans mon cas), qui est également appeler d'autres fichiers JavaScript externes et essayez d'insérer du code HTML. En regardant la console et le code JavaScript, j'ai remarqué plusieurs lignes comme ceci:
J'ai utilisé de la 3e partie des fichiers JavaScript (htmlParser.js et postscribe.js) à partir de: https://github.com/krux/postscribe. Qui a résolu le problème dans ce post, et de la correction de l'erreur ci-dessus en même temps.
(Ce qui était une façon rapide et sale autour de sous le délai serré que j'ai maintenant. Je ne suis pas à l'aise avec l'utilisation de la 3ème partie de la bibliothèque JavaScript cependant. J'espère que quelqu'un peut venir avec un nettoyant et une meilleure façon.)
J'ai essayé d'utiliser Google reCAPTCHA explicitement. Voici l'exemple: