2013-07-17 21 views
14

Sono nel bel mezzo dello sviluppo di un'app Web. Sto usando AngularJS per caricare tutti i file dinamicamente nell'interfaccia utente.
1. Ho e index.html su cui tutti i file verranno caricati dinamicamente al clic o al caricamento.Angular JS: carica dinamicamente file CSS e JS

//index.html 
    <signin button> <signup button> // etc., 
    //on-clicking signin button a SignIn-page will load in the below div 

    <div id="bodyview"></div> 
    // end of index.html 

Ora la mia pagina di accesso appare un po 'come la struttura sottostante

/*a div where my accordion menu will load when the 
    *below submit button is clicked*/ 

    <div id="menu"></div> 

    //other sign-in-form stuff will follow on... 

    //submit button at the end 
    <submit button> //only on clicking the submit button the menu will be loaded 

Ora il mio problema è, anche se sono in grado di caricare il file di fisarmonica menu.html, io non sono in grado per caricare i file css e js da cui dipende. Ho esaminato la maggior parte delle discussioni sullo stackoverflow e molti altri ... ma nessuno ha funzionato per me.
Qualcuno può aiutare a determinare un modo per caricare le dipendenze css e js utilizzando Angular JS ...?
Qualsiasi aiuto è apprezzato. Grazie in anticipo

risposta

18

Basta scrivere un servizio per aggiungere i file CSS e JS al <head>

Ecco un servizio di esempio che viene utilizzato per caricare dinamicamente CSS files.You può modificare facilmente per caricare i file JS.

https://github.com/Yappli/angular-css-injector

+2

può essere utilizzato anche per iniettare file JS? –

+0

Potrebbe non funzionare in IE7/8. Vedi http://stackoverflow.com/a/4754995/634204 –

+0

Come possiamo aggiungere file js usando questo? per esempio. controllori. –

0
app.controller('MyCtrl', function($scope,$compile) { 
$("#my").append($compile("<script src='my.js'>")($scope)); 
}); 
+1

Sì! questo è il modo sbagliato. Vedi http://docs.angularjs.org/guide/directive –

+0

Non si dovrebbe fare manipolazione DOM nei controller. Questa è una delle trappole quando si utilizza l'angolare – ehsan88

1

Invece di andare da AngularJS modo, ho cercato di caricare i file utilizzando jQuery. Ha funzionato per me. You can check this link for reference

+1

e qui ho pensato che non avrei visto una risposta che è stata "perché non usare jQuery?" instradamento ... –

+0

L'OP stava provando a caricare il file usando AngularJS. Aggiungere una libreria come JQuery solo per caricare i file non è una buona soluzione. Questo può essere fatto in semplice javascript anche come descritto [qui] (http://www.w3.org/wiki/Dynamic_style_-_manipulating_CSS_with_JavaScript) –