2011-12-20 13 views
10

उचित प्रक्रिया के बारे में उत्सुक हैं, या sproutcore-routing प्रयोग करने के लिए कम से कम आम प्रक्रिया।उचित प्रक्रिया sproutcore-मार्ग

में मुझे वहां पढ़ यह मार्ग के लिए इस बुनियादी उदाहरण दिखाता है:

SC.routes.add(':controller/:action/:id', MyApp, MyApp.route); 

मैं यह सोचते हैं रहा है कि ज्यादातर मामलों में MyApp.route आपूर्ति नियंत्रक पर आपूर्ति की कार्रवाई कहेंगे। मेरा प्रश्न इस चरण से परे है कि आप एक एप्लिकेशन के लिए सेटअप/टियरडाउन सामान को कैसे संभालेंगे जहां आपके पास बहुत से प्राथमिक विचार हैं।

नए नियंत्रक instantiating जब के रूप में नियंत्रक परिवर्तन हमेशा डेटा और विचारों का एक साफ़ स्लेट के साथ शुरू करने के लिए लोगों को कर रहे हैं? या क्या यह सभी सामान्य नियंत्रकों को लोड करने के लिए अधिक सामान्य/सलाह दी जाती है और जैसे लोड पर और प्राथमिक विचारों को दिखाने/छिपाने के लिए बस रूटिंग का उपयोग करें?

मैं एक ही सवाल है जब एक नियंत्रक के भीतर कार्रवाई के बीच उछल चला जाता है लगता है। क्या कुछ टियरडाउन करना विशेष रूप से बाइंडिंग/श्रोताओं पर करना उचित है, और फिर कार्रवाई को याद किए जाने पर उन्हें फिर से स्थापित करना उचित है?

मेरा प्रश्न थोड़ा अस्पष्ट हो सकता है, लेकिन मैं मूल रूप से सोच रहा हूं कि लोग कितने प्राथमिक विचारों को संभालते हैं, और सफाई के साथ सौदा करते हैं, इसलिए सामान बहुत सारे संसाधनों को खराब नहीं करते हैं या चबाते हैं।

उत्तर

2

सबसे एंबर और Sproutcore ऐप्स और उदाहरणों में मैंने देखा है, नियंत्रक एप्लिकेशन प्रारंभ में instantiated कर रहे हैं। मार्ग राज्यक्षेत्रों में राज्य परिवर्तन चलाते हैं, जहां नियंत्रक अद्यतन होते हैं और आवश्यकतानुसार विचार बनाए/नष्ट होते हैं।

2

मैं निम्नलिखित सेटअप है।

मेरी Ember.Application.create में() मैं निम्नलिखित कोड:

MyApp.routes = Em.Object.create({ 
     currentRoute: null, 

     gotoRoute: function(routeParams) { 
      console.log('MyApp.routes gotoRoute. type: ' + routeParams.type + ' action: ' + routeParams.action + " id: " + routeParams.id); 
      if (routeParams.type === 'expectedType' && routeParams.action === 'expectedAction' && routeParams.id) { 
       //find item with ID and load in controller 
       MyApp.MyController.findItemWithId(routeParams.id); 
       //Navigate to the correct state 
       MyApp.stateManager.goToState('stateName'); 
      } 
     } 
    }) 

    SC.routes.add(":action/:type/:id", MyApp.routes, 'gotoRoute'); 

तब, जब मैं चीजें हैं जो यूआरएल कारण बदलने के लिए चाहिए पर क्लिक करें मैं करता हूँ:

SC.routes.set("location", "show/item/ID-123-123"); 

आपके ऐप को अब यूआरएल में बदलावों को सुनना चाहिए और यूआरएल-पार्ट के आधार पर सही कार्रवाई होनी चाहिए।

आप शायद MyApp.MyController.findItemWithId को स्थानांतरित कर सकता है (routeParams.id); स्टेटकार्ट के एंटर() फ़ंक्शन (यदि आप उनका उपयोग कर रहे हैं) में हैं, लेकिन आपको कुछ नियंत्रक में कहीं भी उस आईडी को स्टोर करने की आवश्यकता है।

संबंधित मुद्दे