क्या राउटर की आंतरिक स्थिरता को तोड़ने के बिना एम्बर.जेएस राउटर में सशर्त रीडायरेक्ट करने का कोई तरीका है?एम्बरज: राउटर में सशर्त रीडायरेक्ट
उत्तर
आप (आज तक) कर सकता है क्या, ऐसा ही कुछ है:
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 के लिए दिखाया गया है, लेकिन आप जो कुछ भी हालत आप के लिए है ...
यदि आप इसे 'एंटर' के बजाय 'कनेक्टऑटलेट' पर करते हैं तो आपको 'Ember.run.next' की आवश्यकता नहीं होनी चाहिए। –
परिशुद्धता के लिए धन्यवाद! :-) –
क्या आपके पास उदाहरण है कि इसे 'कनेक्टऑटलेट्स' के साथ कैसे किया जाए? – Qrilka
के लिए उपयोग करने की कल्पना कर सकते। यह another stackoverflow question में शामिल है, जिसमें से TLDR this fiddle जांचना है।
नई रूटर अब एक
beforeModel
हुक जो तुम पर सवारी सशर्त तर्क शामिल करने के लिए कर सकता है, जबकि एक मार्ग में संक्रमण भी शामिल है। beforeModel हुक
model
हुक कहा जाता है से पहले बुलाया जाएगा और यह एक
transition
वस्तु पारित कर दिया जाता है। आप तय कर सकते हैं यदि आप
transitionToRoute()
का उपयोग कर एक और मार्ग रीडायरेक्ट करना चाहते हैं या आप संक्रमण गर्भपात यदि आप नहीं करते
transition.abort()
फोन करके पुन: निर्देशित करना थोड़ा और तुम क्यों 'व्याख्या कर सकते हैं चाहता हूँ सकता है 'connectOutlets' से एक अलग मार्ग में फिर से संक्रमण? (मैं एम्बर में एक नोब की तरह हूं, इसलिए शायद मैं समझ नहीं पा रहा हूं कि आप क्या करने की कोशिश कर रहे हैं) – MilkyWayJoe
वैसे, मार्गों में अब एक 'रीडायरेक्ट:' तत्व है जिसे आप ओवरराइड कर सकते हैं, यह वर्तमान में है मार्गदर्शक। – totowtwo