2013-09-02 12 views
12

साथ संकल्प समारोह से बुलाया सेवा में नए राज्य के stateParams राज्य आप एक सेवा एक संकल्प समारोह में कहा जाता है से करने के लिए परिवर्तित कर रहे हैं के लिए $stateParams पहुंचने का एक तरीका है? ngRoute के साथ आप $route.current.params का उपयोग करेंगे। जैसा कि इस न्यूनतम खनखनाहट शो, सेवा केवल राज्य आप जा रहे देखता है:

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

मैं नई $stateParams जब $stateParams एक संकल्प समारोह में सीधे इंजेक्ट किया जाता है, लेकिन मूल्यों एक मार्ग से पीछे अभी भी कर रहे हैं सेवा में

मैं क्या याद आ रही है?

+0

तुम कुछ भी याद आ रही नहीं कर रहे हैं। संक्रमण पूरा होने तक, $ राज्यपैरम सेवा में नए पैरा नहीं होते हैं। – laurelnaiad

+0

वहाँ नए राज्य से पैरामीटर का उपयोग करने के संक्रमण से पहले '$ state' (या कुछ अन्य) सेवा के साथ पूरा हो गया है कोई तरीका है? – nrw

+0

के रूप में मैं गहराई से राज्य प्रलेखन वहाँ एक नमूना कोड, कि पता चलता है में देख '$ stateParams' संकल्प हैश में इंजेक्ट किया जा रहा है। विकि खंड 'देखें Resolve' https://github.com/angular-ui/ui-router/wiki – Chandermani

उत्तर

11

आप सेवा में ही भेजे मानकों इंजेक्षन नहीं कर सकते, लेकिन आप उन्हें सेवा में एक समारोह को पारित कर सकते हैं (या आप भी सेवा में एक संपत्ति के लिए उन्हें आवंटित कर सकते हैं)।

this plunker दिखाता है कि कैसे उन्हें एक समारोह, को पारित करने के लिए है, जिसमें सेवा में एक संपत्ति के लिए उन्हें भंडार बदल जाता है। एक "डमी" संपत्ति का उपयोग करना चोट नहीं पहुंचाएगा, लेकिन यह थोड़ा बदसूरत है। :)

इसे और अधिक समझ बनाने के एक संकल्प संपत्ति के रूप में नियंत्रक करने के लिए पैरामीटर भेजने और फिर उन्हें वितरित करने के लिए नियंत्रक निर्माता से एक सेवा के लिए हो सकता है ... कि मुझे क्या करना चाहते हैं क्या है।

+0

नमस्ते, अपने plunker इतना टूट गया था मैं यह तय हो गई है, यहाँ कांटा अद्यतन: http://plnkr.co/edit/JZjkG1UdTi1V60DykFxg?p=preview –

8
stateprovider

resolve: { 
    something: function(MyService, $stateParams){ 
     return MyService.doSomethingWithParam($stateParams.someParameter); 
    } 
} 

में अपने संकल्प समारोह में

आपकी सेवा

myService = angular.module('myService', []) 
    .factory('MyService', function() { 

     var myServiceInstance; 

     myServiceInstance.doSomethingWithParam= function(param){ 
      //...store or do something with your state param here and return result 
     }; 

     return myServiceInstance; 
}); 
+0

कैसे है कि काम जब न्यूनतम किया गया होगा? – pilau

+2

@pilau, अगर आप का उपयोग 'एनजी-annotate' वहाँ minification के साथ कोई समस्या नहीं होगी। –

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