मैं नए एम्बर राउटर के साथ मोडल राज्यों/विचारों को संभालने का सही तरीका नहीं समझ सकता। अधिक आम तौर पर, आप राज्यों को कैसे संभालेंगे कि आप "मुख्य" स्थिति (यूआरएल) को प्रभावित किए बिना प्रवेश और बाहर निकल सकते हैं?एम्बर राउटर v2 के साथ मोडल राज्यों में प्रवेश करने और बाहर निकलने का सही तरीका क्या है?
उदाहरण के लिए, वर्तमान पत्ते की स्थिति के बावजूद उपलब्ध "नया संदेश" बटन है। "नया संदेश" पर क्लिक करने से यूआरएल को प्रभावित किए बिना, मौजूदा दृश्य पर नया संदेश मोडल खोलना चाहिए।
वर्तमान में, मैं इस तरह एक दृष्टिकोण का उपयोग कर रहा:
मार्गों:
App.Router.map(function() {
this.route('inbox');
this.route('archive');
});
App.IndexRoute = Em.Route.extend({
...
events: {
newMessage: function() {
this.render('new_message', { into: 'application', outlet: 'modalView' });
},
// Clicking 'Save' or 'Cancel' in the new message modal triggers this event to remove the view:
hideModal: function() {
// BAD - using private API
this.router._lookupActiveView('application').disconnectOutlet('modalView');
}
}
});
App.InboxRoute = Em.Route.extend({
...
renderTemplate: function(controller, model) {
// BAD - need to specify the application template, instead of using default implementation
this.render('inbox', { into: 'application' });
}
});
App.ArchiveRoute = ... // basically the same as InboxRoute
application.handlebars:
<button {{action newMessage}}>New Message</button>
{{outlet}}
{{outlet modalView}}
मैं स्पष्ट रूप से संक्षिप्तता के लिए कुछ कोड बाहर छोड़ दिया गया है।
यह दृष्टिकोण 'काम करता है' लेकिन दोनों समस्याओं से ऊपर की पहचान की है:
- मैं
hideModal
ईवेंट हैंडलर में मोडल दृश्य को दूर करने के लिए एक निजी एपीआई का उपयोग कर रहा हूँ। - मुझे अपने सभी सब्रॉउट्स में
application
टेम्पलेट निर्दिष्ट करने की आवश्यकता है, क्योंकि यदि नहीं, तोrenderTemplate
का डिफ़ॉल्ट कार्यान्वयन मोडल के टेम्पलेट में प्रस्तुत करने का प्रयास करेगा यदि आप मोडल खोलते हैं, इसे बंद करते हैं, और फिर इनबॉक्स और संग्रह राज्यों के बीच नेविगेट करें (क्योंकि मॉडेल का टेम्पलेट इंडेक्स रूट के लिएlastRenderedTemplate
बन गया है)।
जाहिर है, इनमें से कोई भी समस्या डीलब्रेकर्स नहीं है, लेकिन यह जानना अच्छा होगा कि कोई बेहतर दृष्टिकोण है जो मुझे याद आ रहा है या यदि यह वर्तमान राउटर एपीआई में एक अंतर है।
धन्यवाद - यह मेरे लिए समझ में आता है और मेरे समाधान में कुछ राज्य मुद्दों से बचाता है। –