2012-12-20 24 views
5

मैं अभी भी Extjs और mvc सीख रहा हूं इसलिए मेरे पास एक डिज़ाइन प्रश्न है जो मुझे यकीन है कि कोई मेरे लिए जवाब दे सकता है। मेरा सवाल है:Extjs4 mvc डिज़ाइन विचार

मेरे पास 2 नियंत्रक हैं जो दो अलग-अलग विचारों को संभालते हैं। उपयोगकर्ता के प्रकार के आधार पर सही नियंत्रण प्रस्तुत करने के लिए दोनों नियंत्रकों में से किसी एक को बुलाया जाता है। तो मेरे मामले में यदि उपयोगकर्ता व्यवस्थापक है तो उन्हें क्रेडेंशियल्स के आधार पर व्यवस्थापक दृश्य मिलेगा और यदि व्यक्ति मानक उपयोगकर्ता होगा तो उन्हें मानक दृश्य मिलेगा। क्या निर्णय तर्क ऐप.जेएस में रखा जाना चाहिए या क्या कोई अन्य नियंत्रक होना चाहिए जो तय करता है कि कौन से नियंत्रक को कॉल करना है?

एक तरह से मैं के बारे में सोच रहा हूँ: मानक उपयोगकर्ता

Ext.define('standardController', { 

     // handles standard 
}) 

App.js के लिए

Ext.define('adminController', { 

     // handles admin 
}) 

नियंत्रक व्यवस्थापक के लिए

नियंत्रक

Ext.application({ 
    name: 'MTK', 
    autoCreateViewport: true, 

    if(admin) { 
     controllers: ['adminController'] 
    } 
    else(std){ 
     controllers: ['standardController'] 
    } 
}); 

एक और विचार:

व्यवस्थापक के लिए नियंत्रक मानक उपयोगकर्ता

Ext.define('standardController', { 

    // handles standard 
}) 

मुख्य नियंत्रक

Ext.define('mainController', { 

    if(admin){ 
     call adminController 
    } 
    else(std){ 
     call standardController 
    } 
}) 

उत्तर

2

मैं ऐसा नहीं होता के लिए

Ext.define('adminController', { 

    // handles admin 
}) 

नियंत्रक (या कम से कम इसमें बहुत अधिक) यह टी में है वह आगे बढ़ता है। मुझे लगता है कि उपयोगकर्ता उस समय उपयोगकर्ता भूमिका को जानने में सक्षम होना चाहिए जब उपयोगकर्ता इसमें लॉग इन कर रहा हो।

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

मैं इन दोनों तरीकों का उपयोग कर रहा हूँ:

  • पुनः लोड/आवेदन दृश्य (! बैकएंड) एक सफल प्रवेश के बाद ले जाते हैं। सर्वर जानता उपयोगकर्ता सत्र
  • वापसी एक सफल प्रवेश डायन के बाद एक कॉन्फ़िगरेशन जानकारी है कि आगे क्या होता है की आवश्यकता के लिए क्या करने के लिए हाथ से वापस परिणाम दृष्टिकोण

दोनों (यह सिर्फ एक नियंत्रक या कुछ और वर्गों हो सकता है) कम कोड में, तेज़ लोडिंग और आसान डिबगिंग

मुझे आशा है कि यह आपको सही दिशा में इंगित करे।

+0

मेरे पास पहले से ही एक लॉगिन रीडायरेक्ट है। मुझे लगता है कि मुझे पहले से ही उल्लेख किया जाना चाहिए था, लेकिन मेरे पास एक सत्र है कि मैं उपयोगकर्ता की ldap जानकारी प्राप्त करता हूं। तो मुझे लगता है कि मैं प्रस्तुत करने के लिए कौन सा दृश्य निर्धारित करने के लिए एक और नियंत्रक का उपयोग कर सकता हूं। – reagan

+0

@rob सुनिश्चित करने के लिए आप कर सकते हैं लेकिन मैं उपयोगकर्ता भूमिकाओं या फ्रंटेंड नियंत्रकों तक पहुंच के बारे में अधिक निर्णय नहीं लेगा। आपको सर्वरसाइड पर उन्हें हल करना चाहिए और जैसा कि मैंने लॉगिन के बाद रीडायरेक्ट किया है, जो एक भूमिका है जो लॉग-सीएमपी में प्रति भूमिका निर्धारित की जाती है या लॉग इन की गई जानकारी वापस लौटाती है – sra

+0

आपकी मदद के लिए धन्यवाद – reagan

2

दिलचस्प सवाल, मैं @sra से सहमत हूं कि क्लाइंट साइड लॉजिक के माध्यम से ऐसा करने का शायद यह सही तरीका नहीं है, हालांकि यह कहना नहीं है कि यह काम नहीं करेगा।

एक ऐप में मैं काम कर रहा हूं जिस पर हमने सभी नियंत्रकों को परिभाषित करने के दृष्टिकोण का उपयोग किया है जो 'एनवी' शैली नियंत्रक में बुलाया जा सकता है या नहीं।यह एकमात्र ऐसा है जिसे हम सीधे तत्काल चूकते हैं और फिर पहली बार डिफ़ॉल्ट पर आधारित होते हैं और फिर, प्रत्यक्ष नियंत्रण जो हमने उचित नियंत्रकों और विचारों को प्रस्तुत करने के लिए चुना है जो कि दूसरे दृष्टिकोण @ एसआरए की तरह है।

मुझे लगता है कि सारा का पहला दृष्टिकोण सामान्य रूप से समझदार है, लेकिन समस्या तब आती है जब आपके पास शायद एक ऐसा दृश्य होता है जिसे व्यवस्थापक के रूप में संपादन योग्य होना चाहिए और उपयोगकर्ता को केवल पढ़ा जाना चाहिए। आप इस स्थिति में दो विचार लिखना नहीं चाहते हैं।

एक चीज मैंने कोशिश नहीं की है (लेकिन इस सवाल ने मुझे करना है!) एक या तो वापस लौटना है) सर्वर पक्ष तर्क के आधार पर थोड़ा अलग मॉडल, जैसे 'उपयोगकर्ता' या 'रीडोन्युल्यूसर' और पॉप एक ही दृश्य में (दो विचारों की आवश्यकता को बचाने के लिए) या बी) प्रत्येक डेटा प्रॉपर्टी के साथ एक 'संपादन योग्य' ध्वज के साथ एक और जटिल मॉडल वापस करने के लिए। इसका उपयोग ऐप में अलग-अलग फ़ील्ड, या फ़ील्ड को अलग-अलग मोड में प्रस्तुत करने के लिए किया जा सकता है ..... मुझे पता है कि यह आपके द्वारा चुने गए दृष्टिकोण में रुचि रखने वाले प्रश्न का उत्तर नहीं देता है और किसी भी निष्कर्ष को आप रिपोर्ट करने की परवाह करते हैं!

+0

चिंता एक मॉडल अलग आउटपुट: वास्तव में मैं इसे अपने पहले भाग में कर रहा हूं लेकिन यह शुरू करने के लिए थोड़ा जटिल है। लेकिन मैं आपको बता सकता हूं कि यह एक आकर्षण पसंद करता है और बॉक्स के बाहर यह एसीएल – sra

+0

में पूरी तरह से एकीकृत है एक विशिष्ट कार्यान्वयन पीओवी से, आपने मॉडल को आउटपुट करने के लिए कैसे चुना है? संभवतः एक मॉडल 'संपादन योग्य' ध्वज वाला एक मॉडल जो दृश्य का जवाब देता है? या गुणों का नाम '(टेक्स्टबॉक्स के रूप में प्रस्तुत किया गया) और' readonlyname '(एक प्रदर्शन फ़ील्ड के रूप में प्रस्तुत किया गया है) का चयन और दृश्य केवल उन फ़ील्ड को उठाता है जो इसे पाता है? एक्स्ट में हमारी सबसे आम समस्या ro/rw मोड में विचार प्रस्तुत करती है और उस के लिए कैटरिंग कैसे करें, विषय पर किसी भी विचार को देखने में बहुत रुचि रखते हैं – dougajmcdonald

+0

मैं इसे थोड़ा और विस्तृत समझाऊंगा: मैं प्रत्येक इकाई को देखने के साथ शुरू करता हूं एक मॉड्यूल के रूप में (बैकएंड के रूप में फ्रंटेंड)। इसका मतलब है कि प्रत्येक में कम से कम इसका बैकएंडकंट्रोलर होता है (कुछ में केवल फ्रंटेंड के भीतर मॉडल/स्टोर होते हैं)। डेटा के नीचे नियंत्रक उपयोगकर्ता एसीएल के आधार पर होने वाली फ्रंटेंड कक्षाओं को भी वापस कर सकता है और लोडटाइम को कम करने के लिए कैशिंग सिस्टम द्वारा समर्थित है। एसीएल इसका थोड़ा सा हिस्सा बनाता है क्योंकि इसे किसी उपयोगकर्ता द्वारा आसानी से मेनटेनेबल करने के लिए डिज़ाइन किया गया है (मुझे कुछ भी कॉन्फ़िगर करने की आवश्यकता है)। यह आलसी लोडिंग और पूर्ण ऐप लोडिंग के लिए काम करता है। – sra

0

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

और किसी भी तरीके से नियंत्रक को प्रस्तुत करने वाले भाग को नहीं करना चाहिए जो देखने का काम है केवल नियंत्रक का उपयोग केवल उन घटनाओं पर प्रतिक्रिया के लिए करें दृश्य