2012-10-22 19 views
11

मैं थोड़ी देर के लिए एम्बर का उपयोग कर रहा हूं लेकिन कभी-कभी सर्वोत्तम प्रथाओं को जानने के लिए संघर्ष कर रहा हूं। तो नियंत्रक और दृश्य के बारे में एंबर तरीकों में से एकएम्बर नियंत्रकों के एकाधिक उदाहरण

एंबर के डिजाइनरों की एक राय है, कि रूटर द्वारा लागू की जाती है कि किसी दिए गए basename (जैसे "अनुप्रयोग," "CustomerEntry," "मेरे आइटम") के लिए बेसनेम व्यू और बेसनाम कंट्रोलर होना चाहिए। - Ember guide

समस्या यह है कि यदि मैं किसी पृष्ठ पर एक ही दृश्य के कई उदाहरण चाहता हूं तो क्या होगा। चूंकि नियंत्रक आवेदन की शुरुआत के दौरान बनाया गया है, इसलिए वे एप्लिकेशन नेमस्पेस के तहत सिंगलेट हैं, जो मॉडल डेटा के दो उदाहरण नहीं रख पाएंगे।

एक समाधान जो मैं देखता हूं वह मैन्युअल रूप से नियंत्रक (और मॉडल डेटा) बनाना और उन्हें दृश्यों में भेजना है। लेकिन इस मामले में, मैं चाहता हूं कि एम्बर स्वचालित रूप से मेरे लिए नियंत्रक नहीं बनाये। इसे एक और तरीका दें, एम्बर एप्लिकेशन स्टार्टअप के दौरान नियंत्रकों को सिंगलेट के रूप में क्यों बनाएगा।

+0

क्या आप वाकई एक ही नियंत्रक के कई उदाहरणों की आवश्यकता है? ऐसा लगता है कि आपके पास आवश्यक अलग-अलग विचारों से जुड़े विभिन्न नियंत्रक हो सकते हैं। नियंत्रक मॉडल डेटा के विभिन्न उदाहरण नहीं रखते हैं, वे आमतौर पर बाइंडिंग का उपयोग करके डेटा को देखने के लिए प्रॉक्सी करते हैं। एम्बर आर्किटेक्चर की मेरी समझ यह है कि विचारों के साथ विचार यह है कि डीओएम/सीएसएस सामान और उपयोगकर्ता घटनाओं को संभालने के लिए सख्ती से जिम्मेदार हैं। एप्लिकेशन तर्क राउटर/नियंत्रक स्तर पर बना रहता है, इसलिए हो सकता है कि यह कई अलग-अलग नियंत्रकों के लिए समझ में आता है, भले ही वे एक ही डेटा प्रॉक्सी करें। –

उत्तर

2

मुझे लगता है कि ऐसे कई उपयोग मामले हैं जहां व्यू प्रकार में संबंधित नियंत्रक प्रकार नहीं है। विशेष रूप से जब दृश्य प्रकार एक पूर्ण आवेदन सुविधा की तुलना में यूआई विजेट की तरह अधिक होता है। कई विचार एक ही नियंत्रक साझा कर सकते हैं। इस applicationView टेम्पलेट पर एक नज़र डालें:

<h1>Here are two files, compare them</h1> 
{{view App.MyFileView contentBinding="leftFileContent"}} 
{{view App.MyFileView contentBinding="rightFileContent"}} 

यह मेरे विचार वर्ग के दो उदाहरणों बनाता है और applicationController पर दो अलग-अलग गुण के लिए अपनी सामग्री गुण बांधता है। उन दोनों विचारों के लिए नियंत्रक संपत्ति सिंगलटन एप्लिकेशन नियंत्रक उदाहरण पर सेट है।

एक संभावित कारण है कि नियंत्रक सिंगलटन क्यों हो सकते हैं कि वे App.router.myController जैसे कुछ के माध्यम से वैश्विक नामस्थान में संबोधित करने में सक्षम हैं।

+0

नियंत्रक बाइंडिंग संपत्ति का उपयोग करने के बारे में कैसे? –

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