मैं विरासत में एम्बर एप्लिकेशन को दोबारा करने पर काम कर रहा हूं, जिसमें काफी गैर-एमवीसी विकार है। मैं चीजों को यथासंभव मॉड्यूलर रखने की सोच रहा हूं, और कोड डुप्लिकेशन को रोकने में मदद के लिए कई स्क्रीनों में विभिन्न यूई घटकों का पुन: उपयोग करने की उम्मीद कर रहा हूं।Ember.js - मैं नेस्टेड/बार-बार विचारों में आउटलेट को कैसे लक्षित करूं, और ऐसे यूई लेआउट के लिए सर्वोत्तम प्रथाएं क्या हैं?
ऐसा लगता है कि आउटलेट ऐसा करने का सबसे अच्छा तरीका है।
अभी, मेरे पास एक यूआई है जो कई तत्वों को प्रदर्शित करता है, प्रत्येक टेम्पलेटेटेड व्यू का उपयोग करके प्रस्तुत किया जाता है।
{{#each item in controller}}
{{view App.ItemThumbView}}
{{/each}}
इस दृश्य का दायां साइडबार एक आउटलेट है जो चयन के आधार पर बदलता है। जब मैं कोई आइटम चुनता हूं, तो मैं templatized उप-दृश्य के भीतर संपादन संचालन की एक सूची प्रदर्शित करना चाहता हूं, जो चयनित होने पर, नेस्टेड आउटलेट के माध्यम से उचित संपादन UI प्रकट करता है।
मूलतः
+---------------------------------------------------+
| Parent Pane
|
| +------------------------------+ +----------+
| | Device Section | | Sidebar |
| | | | [Outlet] |
| | +--------+ +---------+ | | |
| | | Dev 1 | | Dev 2 | | | |
| | |[outlet]| | [outlet]| | +----------+
| | +--------+ +---------+ |
| +------------------------------+
+--------------------------------------------------+
नेस्टेड बार देखा गया सभी का हिस्सा एक ही नियंत्रक - जो समझ में आता है - लेकिन मैं उसके संगत आउटलेट से किसी चयनित दृश्य कनेक्ट करने में सक्षम होने की जरूरत है। कनेक्टिंग आउटलेट पर मेरे शुरुआती प्रयास कभी प्रदर्शित नहीं होते हैं। कोड बिल्कुल असफल नहीं होता है, इसलिए नियंत्रक बस एक छुपा आउटलेट अपडेट कर रहा है।
एम्बर में घोंसला वाले दृश्य के लिए मैं सही आउटलेट कैसे लक्षित करूं? (सबसे अच्छा, मैं साइडबार आउटलेट हिट करने में सक्षम हूं, लेकिन एक नेस्टेड डिवाइस टेम्पलेट के भीतर आउटलेट नहीं।) और क्या यह पहली जगह एम्बर में प्रासंगिक मेनू को लागू करने के लिए एक उचित संरचना है?
* स्पष्टीकरण के लिए मेरे वर्तमान सेटअप के साथ, प्रत्येक डिवाइस आइटम को उसी टेम्पलेट का उपयोग करके प्रस्तुत किया जाता है। चयनित होने पर, साइडबार आउटलेट कुछ डिवाइस की मेटा जानकारी के साथ अपडेट होगा, जबकि चयनित डिवाइस दृश्य अपने आउटलेट को एक संपादन मेनू से भी कनेक्ट करेगा। केवल एक डिवाइस आइटम में एक समय में 'एडिट' आउटलेट जुड़ा होगा।
क्या यहां एक आउटलेट का उपयोग करने का अर्थ है, या क्या मुझे संपादन मेनू को आवश्यकतानुसार प्रदर्शित करने के लिए टेम्पलेट में सशर्त तर्क छोड़ना चाहिए? को फिर से करने के लिए
अद्यतन सवाल की सर्वोत्तम प्रथाओं भाग:
दुकानों decoupling घटकों, और भविष्य-प्रूफिंग संभावित दृश्य nestings के लिए महान होने लगते हैं। लेकिन अभी ऐसा लगता है कि घोंसला वाले दृश्य के लिए सही आउटलेट तक पहुंचना थोड़ा बोझिल है। इसके अलावा, यदि आप हमेशा जानते हैं कि टेम्पलेट के भीतर कौन सा घटक सशर्त रूप से घोंसला जाएगा, तो यह आपके विचारों को केवल हार्डकोड करने के लिए आसान लगता है। उदाहरण:
// within template used for individual result-list items
{{#if condition }}
{{view reusableSubView}}
{{/if}
यहां चीजों को करने का पसंदीदा एम्बर तरीका क्या है? क्या आउटलेट बनाने के लिए कोई ओवरहेड है जो हर समय कनेक्ट नहीं हो सकता है?