दिलचस्प पोस्ट
पार्सल चला सकते हैं समानांतर में आदेश? एक विभाजन गलती क्या है? mysqli_select_db () पैरामीटर 1 को mysqli होने की उम्मीद है, स्ट्रिंग दी तत्व पर आधारित AddMethod के साथ गतिशील jQuery के मान्य त्रुटि संदेश dict.fromkeys सभी बिंदु एक ही सूची में मैट्रिक्स में दिए गए मान के तत्वों की संख्या कैसे गिना जा सकता है? PHP – स्ट्रिंग के अंत में सभी विशिष्ट वर्ण कैसे निकालें? MongoDB-CR प्रमाणीकरण विफल हुआ गतिशील प्रोग्रामिंग – सबसे बड़ा वर्ग ब्लॉक Outcommented Facelets कोड अभी भी # {bean.action ()} जैसे EL अभिव्यक्तिों को आह्वान करता है और # {bean.action} पर javax.el.PropertyNotFoundException का कारण बनता है VB .NET में नियंत्रण कक्ष बनाने के लिए PHP इको लाइन ब्रेक मैं PHP में उपयोगकर्ता लॉगिन प्रयास को कैसे थ्रॉटल कर सकता हूं? पैटर्न का उपयोग क्या है। प्रश्न विधि? Xcode 4 में प्रोजेक्ट टेम्पलेट कैसे बनाएं

AngularJS: फैक्टरी $ http.get JSON फ़ाइल

मैं सिर्फ एक हार्डकोड जेसन फाइल के साथ स्थानीय स्तर पर विकसित करने के लिए देख रहा हूँ। मेरी JSON फ़ाइल निम्नानुसार है (वैध जब JSON validator में डाल दिया):

{ "contentItem": [ { "contentID" : "1", "contentVideo" : "file.mov", "contentThumbnail" : "url.jpg", "contentRating" : "5", "contentTitle" : "Guitar Lessons", "username" : "Username", "realname" : "Real name", "contentTags" : [ { "tag" : "Guitar"}, { "tag" : "Intermediate"}, { "tag" : "Chords"} ], "contentAbout" : "Learn how to play guitar!", "contentTime" : [ { "" : "", "" : "", "" : "", "" : ""}, { "" : "", "" : "", "" : "", "" : ""} ], "series" :[ { "seriesVideo" : "file.mov", "seriesThumbnail" : "url.jpg", "seriesTime" : "time", "seriesNumber" : "1", "seriesTitle" : "How to Play Guitar" }, { "videoFile" : "file.mov", "seriesThumbnail" : "url.jpg", "seriesTime" : "time", "seriesNumber" : "2", "seriesTitle" : "How to Play Guitar" } ] },{ "contentID" : "2", "contentVideo" : "file.mov", "contentThumbnail" : "url.jpg", "contentRating" : "5", "contentTitle" : "Guitar Lessons", "username" : "Username", "realname" : "Real name", "contentTags" : [ { "tag" : "Guitar"}, { "tag" : "Intermediate"}, { "tag" : "Chords"} ], "contentAbout" : "Learn how to play guitar!", "contentTime" : [ { "" : "", "" : "", "" : "", "" : ""}, { "" : "", "" : "", "" : "", "" : ""} ], "series" :[ { "seriesVideo" : "file.mov", "seriesThumbnail" : "url.jpg", "seriesTime" : "time", "seriesNumber" : "1", "seriesTitle" : "How to Play Guitar" }, { "videoFile" : "file.mov", "seriesThumbnail" : "url.jpg", "seriesTime" : "time", "seriesNumber" : "2", "seriesTitle" : "How to Play Guitar" } ] } ] } 

मैंने अपना नियंत्रक, कारखाना, और एचटीएमएल काम कर लिया है जब कारखाने के अंदर जेएसओएन हार्डकोड किया गया था। हालांकि, अब मैंने $ http.get कोड के साथ JSON को बदल दिया है, यह काम नहीं करता है। मैंने $ http और $ दोनों संसाधनों के इतने सारे अलग-अलग उदाहरण देखे हैं लेकिन सुनिश्चित नहीं हैं कि कहां जाना चाहिए मैं सरल समाधान की तलाश कर रहा हूं मैं एनजी-दोहराने और इसी तरह के निर्देशों के लिए डेटा खींचने की कोशिश कर रहा हूं।

फैक्टरी:

 theApp.factory('mainInfoFactory', function($http) { var mainInfo = $http.get('content.json').success(function(response) { return response.data; }); var factory = {}; // define factory object factory.getMainInfo = function() { // define method on factory object return mainInfo; // returning data that was pulled in $http call }; return factory; // returning factory to make it ready to be pulled by the controller }); 

छोटी या बडी सब तरह की मदद सराहनीय है। धन्यवाद!

वेब के समाधान से एकत्रित समाधान "AngularJS: फैक्टरी $ http.get JSON फ़ाइल"

ठीक है, यहां पर विचार करने वाली चीजों की सूची है:

1) यदि आप किसी भी तरह के वेबसर्वर नहीं चला रहे हैं और सिर्फ फाइल के साथ परीक्षण कर रहे हैं: //index.html, तो आप शायद एक ही मूल नीति के मुद्दों में चल रहे हैं। देख:

https://code.google.com/archive/p/browsersec/wikis/Part2.wiki#Same-origin_policy

कई ब्राउज़र स्थानीय रूप से होस्ट की गई फ़ाइलों को अन्य स्थानीय रूप से होस्ट की गई फ़ाइलों तक पहुंचने की अनुमति नहीं देते हैं। फ़ायरफ़ॉक्स इसे अनुमति देता है, लेकिन केवल तभी जब आप जो फ़ाइल लोड कर रहे हैं उसी फ़ोल्डर में html फ़ाइल (या सबफ़ोल्डर) के रूप में शामिल है।

2) सफलतापूर्वक $ http.get () से लौटा दिया गया परिणाम आपके लिए परिणाम वस्तु को पहले ही विभाजित करता है:

 $http({method: 'GET', url: '/someUrl'}).success(function(data, status, headers, config) { 

इसलिए फ़ंक्शन (प्रतिक्रिया) और रिटर्न प्रतिक्रिया के साथ सफलता कॉल करने के लिए बेमानी है। डेटा।

3) सफलता फ़ंक्शन आप इसे पारित फ़ंक्शन के नतीजे पर वापस नहीं लौटाते, इसलिए यह ऐसा नहीं करता जो आपको लगता है कि यह ऐसा करता है:

 var mainInfo = $http.get('content.json').success(function(response) { return response.data; }); 

यह आपके इरादे के करीब है:

 var mainInfo = null; $http.get('content.json').success(function(data) { mainInfo = data; }); 

4) लेकिन आप वास्तव में क्या करना चाहते हैं, एक वस्तु के संदर्भ को वापस लौटा दिया जाता है, जो कि डेटा लोड होने पर आबाद हो जाएगा, ऐसा कुछ ऐसा है:

 theApp.factory('mainInfo', function($http) { var obj = {content:null}; $http.get('content.json').success(function(data) { // you can do some processing here obj.content = data; }); return obj; }); 

mainInfo.content बंद शुरू होगा, और जब डेटा लोड होता है, यह उस पर इंगित करेगा।

वैकल्पिक रूप से आप $ http.get रिटर्न के वास्तविक वादा वापस कर सकते हैं और इसका इस्तेमाल कर सकते हैं:

 theApp.factory('mainInfo', function($http) { return $http.get('content.json'); }); 

और फिर आप एक नियंत्रक में गणना में अतुल्यकालिक मान का उपयोग कर सकते हैं:

 $scope.foo = "Hello World"; mainInfo.success(function(data) { $scope.foo = "Hello "+data.contentItem[0].username; }); 

मुझे यह नोट करना था कि स्वीकृत उत्तर का चौथा भाग गलत है

 theApp.factory('mainInfo', function($http) { var obj = {content:null}; $http.get('content.json').success(function(data) { // you can do some processing here obj.content = data; }); return obj; }); 

@ कर्ल ज़िलिस के रूप में उपरोक्त कोड असफल हो जायेगा क्योंकि डेटा प्राप्त करने से पहले obj हमेशा वापस किया जाएगा (इस प्रकार मूल्य हमेशा null ) और यह इसलिए है क्योंकि हम एक अतुल्यकालिक कॉल कर रहे हैं

इसी तरह के सवालों का विवरण इस पोस्ट में चर्चा किया गया है


कोणीय में, जब आप एक एसिंक्रोनस कॉल करना चाहते हैं तब फ़ेच किए गए डेटा से निपटने के लिए $promise का उपयोग करें।

सरलतम संस्करण है

 theApp.factory('mainInfo', function($http) { return { get: function(){ $http.get('content.json'); // this will return a promise to controller } }); // and in controller mainInfo.get().then(function(response) { $scope.foo = response.data.contentItem; }); 

मैं success और error का उपयोग नहीं करने का कारण यह है कि मुझे सिर्फ डॉक्टर से पता चला है, ये दो विधियां बहिष्कृत हैं।

$http विरासत वादे के तरीकों की सफलता और त्रुटि को हटा दिया गया है। इसके बजाय मानक then विधि का उपयोग करें

इस जवाब ने मुझे बहुत मदद की और मुझे सही दिशा में बताया, लेकिन मेरे लिए क्या काम किया, और उम्मीद है कि दूसरों को:

 menuApp.controller("dynamicMenuController", function($scope, $http) { $scope.appetizers= []; $http.get('config/menu.json').success(function(data) { console.log("success!"); $scope.appetizers = data.appetizers; console.log(data.appetizers); }); }); 

मेरे पास लगभग ये समस्या है विजुअल स्टूडियो 2013 से मुझे AngularJs एप्लिकेशन डिबग करने की आवश्यकता है I

डिफ़ॉल्ट रूप से आईआईएस एक्सप्रेस ने स्थानीय फाइलों (जैसे जेएसएन) को प्रतिबंधित किया है।

लेकिन, पहले: JSON में जावास्क्रिप्ट वाक्यविन्यास है।

दूसरा: जावास्क्रिप्ट फ़ाइलों की अनुमति है

इसलिए:

  1. JSON को जेएस ( data.json->data.js . data.json->data.js ) का नाम बदलें।

  2. सही लोड कमांड ( $http.get('App/data.js').success(function (data) {...

  3. पेज पर लोड स्क्रिप्ट data.js ( <script src="App/data.js"></script> )

लोड किए गए डेटा का उपयोग सामान्य तरीके से करें। यह बिल्कुल वैकल्पिक है, ज़ाहिर है।

++ यह मेरे लिए काम किया है यह vanilla javascirpt और ngMocks लाइब्रेरी के साथ परीक्षण करते समय डी- ngMocks जैसे उपयोग के मामलों के लिए अच्छा है:

 <!-- specRunner.html - keep this at the top of your <script> asset loading so that it is available readily --> <!-- Frienly tip - have all JSON files in a json-data folder for keeping things organized--> <script src="json-data/findByIdResults.js" charset="utf-8"></script> <script src="json-data/movieResults.js" charset="utf-8"></script> 

यह आपकी javascript फ़ाइल है जिसमें JSON डेटा शामिल है

 // json-data/JSONFindByIdResults.js var JSONFindByIdResults = { "Title": "Star Wars", "Year": "1983", "Rated": "N/A", "Released": "01 May 1983", "Runtime": "N/A", "Genre": "Action, Adventure, Sci-Fi", "Director": "N/A", "Writer": "N/A", "Actors": "Harrison Ford, Alec Guinness, Mark Hamill, James Earl Jones", "Plot": "N/A", "Language": "English", "Country": "USA", "Awards": "N/A", "Poster": "N/A", "Metascore": "N/A", "imdbRating": "7.9", "imdbVotes": "342", "imdbID": "tt0251413", "Type": "game", "Response": "True" }; 

अंत में, अपने कोड में कहीं भी JSON डेटा के साथ काम करें

 // working with JSON data in code var findByIdResults = window.JSONFindByIdResults; 

नोट: – यह परीक्षण के लिए बहुत अच्छा है और यहां तक ​​कि karma.conf.js इन फाइलों को नीचे चलने वाले परीक्षणों को चलाने के लिए स्वीकार करता है। इसके अलावा, मैं यह केवल de-cluttering डेटा और testing/development वातावरण के लिए सुझाव देता हूं।

 // extract from karma.conf.js files: [ 'json-data/JSONSearchResultHardcodedData.js', 'json-data/JSONFindByIdResults.js' ... ] 

उम्मीद है की यह मदद करेगा।

++ इस उत्तर के शीर्ष पर निर्मित https://stackoverflow.com/a/24378510/4742733

अद्यतन करें

मेरे लिए काम करने वाला एक आसान तरीका सिर्फ JSON लौटाए गए कोड के नीचे एक function शामिल है।

 // within test code let movies = getMovieSearchJSON(); ..... ... ... .... // way down below in the code function getMovieSearchJSON() { return { "Title": "Bri Squared", "Year": "2011", "Rated": "N/A", "Released": "N/A", "Runtime": "N/A", "Genre": "Comedy", "Director": "Joy Gohring", "Writer": "Briana Lane", "Actors": "Brianne Davis, Briana Lane, Jorge Garcia, Gabriel Tigerman", "Plot": "N/A", "Language": "English", "Country": "USA", "Awards": "N/A", "Poster": "http://ia.media-imdb.com/images/M/MV5BMjEzNDUxMDI4OV5BMl5BanBnXkFtZTcwMjE2MzczNQ@@._V1_SX300.jpg", "Metascore": "N/A", "imdbRating": "8.2", "imdbVotes": "5", "imdbID": "tt1937109", "Type": "movie", "Response": "True" } }