2014-09-19 4 views
0

J'ai un fichier java script qui contient un objet de configuration pour décoder beaucoup de jargon d'affaires pour la facilité d'utilisation dans mon application.y compris js externes fichier dans angulaire

Comment puis-je obtenir que pour être disponible pour mon application angulaire? Je l'ai actuellement inclus dans mon fichier html au-dessus de tous les fichiers d'application.

voici mon config.js:

var config = { 
    "metadata":[ 
       "8235205241531AF399B113140005492E":{ 
        "name":"verison_number" 
       } 
    ] 
} 

ici Includes est:

 <script src="libs/bootstrap/dist/js/bootstrap.min.js"></script> 
     <script src="libs/angular/angular.min.js"></script> 
     <script src="libs/angular-resources/angular-resource.min.js"></script> 
     <script src="libs/angular-route/angular-route.min.js"></script> 
     <script src="js/config.js"></script> 
     <script src="js/viewer.js"></script> 
     <script src="js/controller.js"></script> 
     <script src="js/services.js"></script> 
     <script src="js/routes.js"></script> 
     <script src="js/app.js"></script> 

Voici mon contrôleur essaie juste de faire un console.log sur elle:

var MainCtrl = angular.module('MainCtrl', []); 


MainCtrl.controller('loader',['$scope','$rootScope','$http','startApp', function($scope,$rootScope,$http,startApp) { 
    console.log(config); 
    console.log('loading course...'); 
    console.log(startApp); 
}]); 
+0

si vous l'avez dans le code HTML qui contient un script angulaire alors angulaire a l'accès si l'objet de configuration est globale. – V31

+0

Ai-je besoin de l'injecter dans mon application? Il arrive comme non défini. –

+0

@JasonSpick montre au moins une sorte de code. – m59

Répondre

2

Votre JSON est incorrect.

Voici la bonne façon de déclarer config:

var config = { 
"metadata":[ 
    {"8235205241531AF399B113140005492E":"verison_number"} 
]} 

Working Plunkr

+0

Heheh, si évident! Parfois, c'est difficile de voir ça. Bon travail! – m59

+0

Je voudrais mettre à jour votre réponse qu'il est inapproprié et mauvais pour les tests d'utiliser une variable globale comme ça. Il doit définir un service/une valeur angulaire et l'injecter si nécessaire. – m59

+0

Ce n'est pas ça, j'ai mis à jour mon code. regarde. –

0

Peut-être en utilisant la recette de valeur. Par exemple:

var app = angular.module('MainCtrl'); 

// later 

app.value('myconfigs',config); // set your "object" 

// somewhere in your controller code 

MainCtrl.controller('loader',['$scope','$rootScope','$http','startApp','myconfigs', function($scope,$rootScope,$http,startApp, myconfig) { 
    console.log(myconfig.metadata); 
    console.log('loading course...'); 
    console.log(startApp); 
}]); 
+0

Cela ne va pas résoudre le problème. Si 'config' est vraiment indéfini, alors vous définissez simplement' value' sur undefined. – m59

Questions connexes