मेरे पास दो अलग-अलग मार्ग हैं पार्किंग और कार (एक नेस्टेड मार्ग नहीं)।

पार्किंग मार्ग में पार्किंग आईडी /parking/21 और . जैसे गतिशील खंड हैं कार में कार का नाम और आईडी है /car/ford/12

राउटर.जेएस:

Router.map( function() {
   this.route("parking", { path: "/parking/:parkingId"})
   this.route("car", { path: "/car/:carName/:carId" })
});

जब पार्किंग मार्ग से कार मार्ग में संक्रमण होता है, तो मुझे (/parking/21/ford/12) जैसे url की आवश्यकता होती है

0
Tom 3 फरवरी 2020, 16:20
आपके पास वह यूआरएल है। क्या काम नहीं कर रहा है? शायद आप एम्बर समुदाय डिस्कॉर्ड चैनल में शामिल होना चाहते हैं?
 – 
Lux
3 फरवरी 2020, 16:26
क्या आपने transitionTo('car', 'ford', '21') की कोशिश की है? और अगर आप पार्किंग चाहते हैं तो आपको car रूट को parking के नीचे घोंसला बनाना होगा।
 – 
Lux
3 फरवरी 2020, 16:31
कार मार्ग पार्किंग के तहत घोंसला नहीं जा रहा है, यह एक अलग मार्ग है
 – 
Tom
3 फरवरी 2020, 16:43
लेकिन होना चाहिए। शायद यही आपका समाधान है।
 – 
Lux
3 फरवरी 2020, 17:23

2 जवाब

सबसे बढ़िया उत्तर

यदि आप नेस्टिंग नहीं करना चाहते हैं, तो आपको अपने car रूट में पूरा URL शामिल करना होगा, जैसे:

Router.map( function() {
   this.route("parking", { path: "/parking/:parkingId"});
   this.route("car", { path: "/parking/:parkingId/car/:carName/:carId" });
});

car रूट पर ट्रांजिशन करते समय, आपको एक बार फिर से सभी तीन डायनेमिक सेगमेंट को पास करना होगा, कुछ इस तरह:

<LinkTo @route="car" @models=(array "myParkingId" "myCarName" "myCarId") />

या:

this.router.transitionTo('car', "myParkingId", "myCarName", "myCarId");
1
locks 4 फरवरी 2020, 18:53
पार्किंग विवरण के बिना कार मार्ग में संक्रमण की भी आवश्यकता है, इसलिए मैंने इस लाइन को अपने राउटर this.route("car", { path: "/car/:carName/:carId" }); में जोड़ा है, लेकिन जब this.transitionTo("/car/ford/12")
 – 
Tom
5 फरवरी 2020, 11:34
आप अलग-अलग paths के साथ एक ही मार्ग को दो बार नहीं जोड़ सकते। साथ ही यह this.transitionTo("car", "ford", "12") होगा।
 – 
Lux
7 फरवरी 2020, 05:28
जैसा कि उल्लेख किया गया है, इसे एक अलग नाम के साथ एक अलग मार्ग की आवश्यकता होगी!
 – 
locks
11 फरवरी 2020, 16:56

मुझे लगता है कि आपका समाधान मार्गों को घोंसला बनाना है:

Router.map( function() {
   this.route("parking", { path: "/parking/:parkingId"}, function() {
       this.route("car", { path: "/car/:carName/:carId" })
   });
});

फिर अपने मौजूदा लॉजिक को parking टेम्प्लेट से parking.index रूट पर ले जाएं। तो आपके पास 3 मार्ग हैं:

  • parking
  • parking.index /parking/1 जैसे यूआरएल के साथ
  • parking.car /parking/1/car/ford/7 जैसे यूआरएल के साथ

हालांकि आप parking मार्ग में कभी भी केवल नहीं होंगे। आप या तो parking.index या parking.car में होंगे।

parking.index और parking.car मार्ग से आप Route से this.modelFor('parking') के साथ parking मार्ग के मॉडल तक पहुंच सकते हैं।

आप transitionTo('parking', 1) या transitionTo('parking.car', 1, 'ford', 7) के साथ संक्रमण कर सकते हैं।

0
Lux 3 फरवरी 2020, 18:17
क्या इसे नेस्टेड मार्ग के बिना बनाना संभव है? मैंने इसी तरह के कुछ मामलों को पेश किया और भविष्य में नए मामलों को पेश करने की योजना बना रहा हूं। मेरा कहना है, हर बार रास्ता बदलना कारगर नहीं है।
 – 
Tom
4 फरवरी 2020, 13:55
आपके रूट नेस्टिंग को आपकी यूआरएल संरचना को प्रतिबिंबित करना चाहिए। यही बात है। दूसरी बात यह है कि सभी 3 गतिशील खंड हों: this.route("car", { path: "/parking/:parkingId/car/:carName/:carId" })
 – 
Lux
4 फरवरी 2020, 13:58