2016-06-15 2 views
5

मैं मूल रूप से ui-राउटर के साथ प्रोजेक्ट करने का इरादा नहीं रखता था (बस 2 दिन पहले इसके बारे में जानना था), इसलिए मैं इस पर काफी नया हूं।मैं कोणीय यूई-राउटर वाले राज्यों के बीच डेटा कैसे पास कर सकता हूं?

मैं इस समस्या के लिए क्या है: छवियों की सूची, एनजी-दोहराने का उपयोग कर, और एक सेवा नियंत्रक में कहा जाता है से img src-हो रही दिखाए लिए

  1. खाका। सेवा को एक जेसन फ़ाइल से स्रोत मिलता है।

  2. छवि संपादक के लिए खाका। इसके लिए नियंत्रक को उस छवि का छवि स्रोत प्राप्त होना चाहिए जिसे छवि सूची में क्लिक किया गया था।

मैं एक राज्य (छवि सूची) से किसी अन्य राज्य (छवि संपादक) में छवि स्रोत कैसे पास करूं?

मैं ऐसा करने के लिए एक सेवा का उपयोग कर रहा था जब मैं मान रहा था कि मैं यूई-राउटर और उसके राज्यों का उपयोग नहीं करूंगा। मैं राज्यों के साथ ऐसा कैसे करूं?

+0

संभावित डुप्लिकेट: http://stackoverflow.com/questions/28248236/angular-ui-router-passing-data-between-states-without-url – dYale

उत्तर

2

तो, मैं डेटा पास करने के लिए एक सरल और कारगर तरीका मिल गया, और यह अब तक मेरे सभी मामलों के लिए काम किया है।

पहला राज्य की नियंत्रक में, state1 (परिदृश्यों मूल प्रश्न में वर्णित के विभिन्न सहित), मैं सिर्फ समारोह

$state.go('state2', {id: self.value}); 

और state2 में कॉल कर सकते हैं, मैं द्वारा मूल्य प्राप्त कर सकते हैं निम्नलिखित कोड:

this.state2value = $state.params.id; 

तो एक से दूसरे राज्य से value गुजरती हैं, और राज्य पैरामीटर के माध्यम से प्राप्त कर सकते हैं।

नोट: आपको $ राज्य, और $ राज्य पैरामीटर दोनों नियंत्रकों में इंजेक्ट करना चाहिए।

+2

अपने राज्य प्रदाता को 'url: "/ test /: id",' जोड़ने के लिए मत भूलना। –

1

मुझे लगता है कि आप राज्य से 2 राज्य 1 से एक छवि आईडी पारित कर सकते हैं, और राज्य में इसे पाने के 2 नियंत्रक:

$stateProvider 
.state('state', { 
    url: "/test/:id", 
    templateUrl: 'template.html', 
    controller: function ($stateParams) { 
     console.log($stateParams.id); 
    } 
}) 

और पहले पृष्ठ से लिंक ui-sref="state({id:42})"

+0

धन्यवाद, यह बहुत उपयोगी था! – McFiddlyWiddly

1

सेवा अभी भी लगता है दो राज्यों के बीच जानकारी साझा करने का अपना सर्वश्रेष्ठ विकल्प बनें। आप अपनी सेवा में किसी भी राज्य जानकारी की जरूरत है तुम सिर्फ इसे में $ राज्य इंजेक्षन कर सकते हैं:

...... 
.service('SomeService', [ 
     '$state', 
     function ($state) { 
      ....... 
संबंधित मुद्दे