2012-11-28 3 views
4

Dans mon projet, je voulais séparer les données des fichiers templates et main.js. Par exemple,Comment obtenir les données json à partir d'un fichier js distinct dans le fichier js principal

dans mes data.js:

define({ 
    heading: "Some Heading", 
    subHeading : "Subheading is cool" 
}); 

dans mes main.js,

require(['jquery', 'data'], function($, data){ 
     console.log("data object is :" + data); 
); 

Cela fonctionne et je reçois le résultat escompté sur la console. De même, je voulais faire un appel api et obtenir les données JSON donc je mis à jour mes data.js comme ci-dessous,

define(function(){ 
    require(["http://some api url.com?apikey=apikey&callback=define"], 
     function (someData) { 
      return someData;  
     } 
    ); 
}); 

mais, je ne reçois pas les données JSON sur main.js de l'appel API, je get "l'objet de données est: undefined".

Je ne suis pas sûr comment obtenir le "someData" sur le fichier main.js.

Toute aide indiquant la solution possible est très appréciée. Merci.

Répondre

2

Vous ne pouvez pas effectuer d'appels de serveur et charger des fichiers via requireJS. Vous devriez utiliser des appels ajax pour le faire. Vous pouvez utiliser la méthode getJSON de jQuery. E.g.

$.getJSON("http://some api url.com?apikey=apikey",function (someData) { 
     //perform the calculations needed with someData here 
     console.log(someData);  
}); 
+0

Merci Janith. Je ai essayé cette méthode aussi, mais je suis incapable d'accéder à "someData" sur le fichier js principal et toujours comme «indéfini» :( – radiant

+0

Mon mauvais, modifié la réponse .. – janith

+0

Merci pour votre temps. Je pensais ne pas effectuer tout action sur le fichier data js et simplement obtenir l'objet json sur le fichier js principal et y faire l'action, par exemple - obtenir le template et obtenir le json à partir des données js et rendre au html – radiant

0

Consultez le RequireJS plugins.

Pour les données JSON, vous modifiez le besoin de

require([`json!http://some api url.com?apikey=apikey&callback=define`], 
     function(someData){ 
      // do something 
     }); 
Questions connexes