2012-07-26 11 views
7

मुझे पता है उत्सुक हूँ क्या तर्क है नई एंबर मार्ग और नियंत्रकों के संबंध में जो परत में:एंबर रूटर और नियंत्रक तर्क

हम एक उदाहरण के रूप में नीचे मार्ग लेते हैं:

step1: Ember.Route.extend 
    route: '/step1' 
    connectOutlets: (router, event) -> 
     exercise = WZ.Exercise.createRecord() 
     router.get('exercisesNewStep1Controller').set 'groups', WZ.store.find(WZ.Group) 
     router.get('exercisesNewController').connectOutlet 'step', 'exercisesNewStep1', exercise 

मेरे ExercisesNewStep1Controller वर्तमान में logicless है:

WZ.ExercisesNewStep1Controller = Em.Controller.extend() 

सिफारिश की सलाह मार्ग सिर्फ सही नियंत्रक बुद्धि के लिए सही आउटलेट बताए की देखभाल करने के लिए हो रहा है नियंत्रक में कोई अन्य तर्क।

मैं कुछ इस तरह करने के लिए अपने नियंत्रक refactor चाहिए:

WZ.ExercisesNewStep1Controller = Em.Controller.extend 
    createGroup: -> 
    @set 'groups', WZ.store.find(WZ.Group) 

यह एक बहुत ही सरल उदाहरण है लेकिन मुझे लगता है तर्क रखती है।

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

मुझे एम्बर पसंद है लेकिन मैं बस इस बिंदु को उठाना चाहता हूं।

उत्तर

2

https://speakerdeck.com/u/tomdale/p/emberjs-more-than-meets-the-eye स्लाइड 55

वास्तव में मैं अगर यह अप करने की तारीख वर्तमान अच्छा प्रथाओं के साथ है, लेकिन मॉडल प्रबंधन (निर्माण/संपादित करने/हटाने) कहीं भी प्रदर्शित नहीं किया जा रहा है है पता नहीं है। ऐसा लगता है कि यह घटना को देखने के जवाब में किया जाना चाहिए, और कनेक्ट्स आउटलेट विधियों में। तो आपका पहला उदाहरण मेरे लिए अच्छा लग रहा है। इसके अलावा, इस स्लाइड में, नियंत्रक में बहुत कम तर्क होना चाहिए ... लेकिन वास्तव में "बहुत कम तर्क" क्या है?

आपका प्रश्न विशेष रूप से अनुभवी एंबर उपयोगकर्ताओं से, मेरे लिए बहुत महत्वपूर्ण है, के रूप में हम किसी भी अन्य सलाह की जरूरत नहीं है।

4

Sproutcore में (किसी को बात करेंगे अगर यह एंबर, जो Sproutcore से निकला में लागू नहीं होता), नियंत्रक लगभग हमेशा सिर्फ गूंगा प्रॉक्सी होना चाहिए। वे कुछ भी नहीं करते हैं।

यह मानते हुए कि एंबर के लिए सच है, मैं तर्क वहाँ जाने नहीं होगा।

सिफारिश की सलाह मार्ग बस नियंत्रक में किसी भी अन्य तर्क के साथ सही नियंत्रक करने के लिए सही आउटलेट बताए की देखभाल करने के लिए हो रहा है।

मुझे लगता है कि सही है। उदाहरणों से मैं ऑनलाइन देखता हूं, मार्ग केवल राज्य हैं। github, this link पर जाकर, आप देखेंगे कि रूट्स राज्यों का विस्तार करते हैं। इसलिए आवेदन स्तर की घटनाओं को आपके मार्गों (यानी राज्यों) में संभाला जाना चाहिए। यह यहां है जहां आप प्रासंगिक वस्तुओं को प्राप्त करेंगे और उन्हें लागू नियंत्रकों में डाल देंगे।

5

मेरे पास टिल्ड टीम के साथ कुछ एक्सचेंज थे, और टॉम डेल ने हमें hvgotcodes द्वारा प्रस्तावित तरीके का पालन करने के लिए सिखाया।

लेकिन एक शोधन पीटर Wagenet के साथ चर्चा के बाद हुई: मेरे interrogation, पीटर & Yehuda mitigated स्थिति के लिए एक जवाब के रूप में हम टॉम स्पष्टीकरण से आयोजित किया।

तो मैं पूरी तस्वीर कह संक्षेप में प्रस्तुत होगा:

  • व्यवहार, मार्ग के ईवेंट हैंडलर्स में एक उच्च स्तर पर कोडित किया जाना चाहिए
  • लेकिन factorized निम्न स्तर के पुरातन मई (/ चाहिए?) नियंत्रकों में स्थानीयकृत हो।

कारण किसी भी प्रसंस्करण को किसी दिए गए मार्ग के अंदर स्कॉप्ड किया जाना चाहिए, जो पूरे ऐप का सुसंगत व्यवहार सुनिश्चित करता है, ऐप के किसी भी हिस्से में सभी संभावित प्रक्रियाओं को नहीं खोलता है।