2016-07-15 21 views
5

के साथ AngularJS में फ़ंक्शन में पैरामीटर को पास करने के लिए कैसे करें मैं सेवा फ़ंक्शन पर पैरामीटर भेजने के लिए चाहता हूं।वादे

getQuestions: समारोह (stateCode): questionResource.js

stateCode dtoResource.rc1Step1DTO() की प्रतिक्रिया से $ दायरे में सेट कर दिया जाता

angular 
    .module('autoQuote') 
    //Do initalization on page load 
    .run(['$log', '$rootScope', '$state', 'dtoResource', 'questionResource', function($log, $rootScope, $state, dtoResource, questionResource) { 
     $log.info('Post DTO on page load.'); 
     dtoResource.rc1Step1DTO() 
      .then(questionResource.getQuestions) 
      .then(function(questions) { 
       $rootScope.questions = questions; 
       console.log('Obtained questions. Assigned to rootscope'); 
      }) 
      .then(function() { 
       console.log('This should be printed after the above methods are done  executing'); 
       console.log($rootScope); 
      }); 

    }]) 

कैसे करें राज्य कोड पारित करने के लिए दूसरा समारोह दायरे में अपनी स्थिति है

$scope.postAutoQuoteObj.SessionInfo.StateCode 

नीचे कोड http://plnkr.co/edit/Op1QDwUBECAosPUC7r3N?p=preview

+0

आपका 'रन()' समारोह चलाता है से पहले अपने नियंत्रक भी मौजूद है, और '$ scope' है कि आप के बारे में बात कर रहे हैं' चलाने() 'समारोह के भीतर से सुलभ नहीं है। मुझे लगता है कि आपको _that_ की रसद को हल करने की आवश्यकता है। – JLRishe

+0

फ़ंक्शंस मैंने लिखा था। रुन मैं डोम लोड होने के बाद निष्पादित करना चाहता हूं, लेकिन ये विधियां स्वतंत्र हैं और सिंक्रोनस ऑर्डर में होनी चाहिए। क्या आप कृपया सुझाव दे सकते हैं कि मुझे क्या परिवर्तन करना चाहिए। पैरामीटर पास मुद्दे पर काम करने से पहले। –

उत्तर

0

के लिए plunker है अपने मॉड्यूल autoQuote.run() केवल अपने अनुप्रयोगों लोड करने के दौरान एक बार बुलाया जाएगा। इसलिए इसे फिर से निष्पादित करने की अपेक्षा न करें।

आप सही उत्तर के करीब हैं। आपको बस कुछ पुनर्गठन करने की जरूरत है। एक टिप जो मैं पेश करता हूं वह बाद में निर्देश बनाने के बारे में चिंता करना है, पहले नियंत्रक प्राप्त करें, मार्ग पहले काम कर रहे हैं। आपने शुरू करने के लिए एक उत्कृष्ट ढांचा बनाया है। आप यूई-राउटर का उपयोग कर रहे हैं। इसका मतलब यह है कि आप यूई-राउटर को बता सकते हैं कि जब राज्य से अनुरोध किया जाता है तो कौन सा नियंत्रक निष्पादित करता है। इसलिए आपके आवेदन के लिए जीवन चक्र निम्नानुसार है

module.run // पहले यहां कोई भी कोड। केवल आपके मामले app.config में intial load module.config // पर जो आपके राज्य बनाता है।

तब यूआरएल के आधार पर आप जो राज्य देख रहे हैं उसके आधार पर; उस स्थिति (या दृश्य) के नियंत्रक को

निष्पादित किया जाएगा, इसलिए यदि आप किसी अन्य राज्य कॉन्फ़िगरेशन को जोड़ते हैं/तो आप उस स्थिति को अपने autoQuoteCtrl पर बाध्य कर सकते हैं।

इसके अतिरिक्त, कई अन्य मुद्दे हैं, जैसे एनजी-मॉडल और इनपुट तत्व में मूल्य का उपयोग करने का प्रयास करना। यह सही नहीं है।

आप अपने यूई-विचारों को लागू नहीं कर रहे हैं। इसका मतलब यह होगा कि आपके नियंत्रक कभी निष्पादित नहीं होंगे। तकनीकी रूप से, यह आपके मामले autoQuoteCtrl को निष्पादित किया जाएगा, लेकिन केवल इसलिए कि आपने इसे एनजी-कंट्रोलर का उपयोग करके पृष्ठ पर मजबूर कर दिया है, जो कि यूई-राउटर से बचने के लिए डिज़ाइन किया गया है।

जो मुझे लगता है कि आपने अपना कोड .run() में क्यों समाप्त कर दिया है। यह एकमात्र ऐसा स्थान था जहां आपने पाया था कि आपका आवेदक पेज लोड पर कोड "चलाएगा" जो गलत है, यह केवल इसलिए चल रहा था क्योंकि आपका ऐप लोड हो गया था। क्षमा करें अगर मैं अनावश्यक हूं। लेकिन यह एक महत्वपूर्ण बात है।

इसके अलावा, आप अपने संसाधन में स्टेटकोड पास करके अपने जेसन डेटा तक पहुंचने का प्रयास कर रहे हैं। यह नहीं है कि संसाधन कैसे काम करता है। आप संसाधन का नाम पास करते हैं, और यह उस संसाधन पर सबकुछ वापस कर देगा। तो वादे वापस आने के बाद आप कोड फ़िल्टर करते हैं। आपके पास केवल एक संसाधन है। वह "सीए.जेसन" है इसलिए आप अपनी संसाधन सेवा में केवल एक पंक्ति से दूर हो सकते हैं और केवल एक संसाधन सेवा की आवश्यकता है। आपको अतिरिक्त गैर-संसाधन सेवाओं की आवश्यकता होगी जो जेएसओएन से सही डेटा को फ़िल्टर करने की हेवींग लिफ्टिंग कर सकते हैं। आम तौर पर यही कारण है कि एक ऐप विभिन्न संसाधनों को बुलाएगा, ताकि प्रत्येक व्यक्ति मॉडल की आवश्यकता हो, न कि एक एकल मोनोलिथिक संसाधन।

और आप कभी कभी आप कोणीय उपयोग कर रहे हैं, तो आप डोम के साथ बातचीत नहीं करते document.getElementById() का उपयोग करना चाहिए सीधे

अंत में, यहाँ एक बहुत ज्यादा संशोधित plunkr मदद करने के लिए सही दिशा में मार्गदर्शन है।

http://plnkr.co/edit/dUJm01uu7RnhltC2pLLb?p=preview

संबंधित मुद्दे