2012-06-25 15 views
10

क्या राउटर की आंतरिक स्थिरता को तोड़ने के बिना एम्बर.जेएस राउटर में सशर्त रीडायरेक्ट करने का कोई तरीका है?एम्बरज: राउटर में सशर्त रीडायरेक्ट

+0

फोन करके पुन: निर्देशित करना थोड़ा और तुम क्यों 'व्याख्या कर सकते हैं चाहता हूँ सकता है 'connectOutlets' से एक अलग मार्ग में फिर से संक्रमण? (मैं एम्बर में एक नोब की तरह हूं, इसलिए शायद मैं समझ नहीं पा रहा हूं कि आप क्या करने की कोशिश कर रहे हैं) – MilkyWayJoe

+1

वैसे, मार्गों में अब एक 'रीडायरेक्ट:' तत्व है जिसे आप ओवरराइड कर सकते हैं, यह वर्तमान में है मार्गदर्शक। – totowtwo

उत्तर

23

आप (आज तक) कर सकता है क्या, ऐसा ही कुछ है:

root: Ember.Route.extend({ 
    index: Ember.Route.extend({ 
     enter: function(router) { 
      var logged = /* get from appropriated source... */; 
      Ember.run.next(function() { 
       if (logged) { 
        router.transitionTo('loggedIn'); 
       } else { 
        router.transitionTo('loggedOut'); 
       } 
      }); 
     } 
    }), 

    loggedIn: Ember.Route.extend({ 
     // ... 
    }), 

    loggedOut: Ember.Route.extend({ 
     // ... 
    }) 
}) 

के रूप में जब तुम enter में हैं Ember.run.next न चूकें, राज्य संक्रमण हमेशा की तरह, लंबित है तो आप संक्रमण के लिए है उसके बाद।

हम इसका इस्तेमाल के रूप में authent के लिए दिखाया गया है, लेकिन आप जो कुछ भी हालत आप के लिए है ...

+4

यदि आप इसे 'एंटर' के बजाय 'कनेक्टऑटलेट' पर करते हैं तो आपको 'Ember.run.next' की आवश्यकता नहीं होनी चाहिए। –

+0

परिशुद्धता के लिए धन्यवाद! :-) –

+0

क्या आपके पास उदाहरण है कि इसे 'कनेक्टऑटलेट्स' के साथ कैसे किया जाए? – Qrilka

2
तुम क्या करने की कोशिश कर रहे हैं क्या, आप सशर्त संक्रमण द्वारा खोजे जा रहे पर निर्भर करता है

के लिए उपयोग करने की कल्पना कर सकते। यह another stackoverflow question में शामिल है, जिसमें से TLDR this fiddle जांचना है।

3

नई रूटर अब एक

beforeModel 

हुक जो तुम पर सवारी सशर्त तर्क शामिल करने के लिए कर सकता है, जबकि एक मार्ग में संक्रमण भी शामिल है। beforeModel हुक

model 

हुक कहा जाता है से पहले बुलाया जाएगा और यह एक

transition 

वस्तु पारित कर दिया जाता है। आप तय कर सकते हैं यदि आप

transitionToRoute() 

का उपयोग कर एक और मार्ग रीडायरेक्ट करना चाहते हैं या आप संक्रमण गर्भपात यदि आप नहीं करते

transition.abort()