2013-06-09 5 views
7

तो मैं सिग्नलर और हॉटटॉवेल को एकीकृत कर रहा हूं, हालांकि वास्तव में मुझे लगता है कि यह एक बात है कि यह डरंडल के साथ कैसे एकीकृत होना है।हॉटटॉवेल (वास्तव में Durandal) और सिग्नलआर प्रारंभिक

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

तो उदाहरण लें कि मेरे पास view1 और view2 है। मैं चाहता हूं कि जब कोई सिग्नलआर संदेश प्राप्त होता है और उस दृश्य के संदर्भ में प्रत्येक को कुछ करना है (तो मान लें कि किसी भी तरह से डोम अपडेट करें)। यह एक एसपीए स्पष्ट रूप से है ताकि प्रत्येक दृश्य के लिए सिग्नलआर स्टार्ट विधि को बुलाया जा सके, एक बुरा विचार लगता है, इसलिए बूट पर एक बार सिग्नल शुरू करना सही योजना की तरह लगता है, लेकिन उस समय मेरे विचार लोड नहीं हो सकते थे, और फिर भी मैं यह कैसे सुनिश्चित करूंगा मेरे कार्यक्रमों के पृष्ठ के लिए सही संदर्भ है।

यह मेरी समझ पर आधारित है कि शुरू करने से पहले साइनलआर के लिए सभी कार्यक्रमों को पंजीकृत करना होगा। StackOverflow के किसी भी विचार चालाक लोग? समस्या वेबसाइट के

भाग एक डेटाबेस में आयात करने के पार्स करने और प्रसंस्करण के लिए फ़ाइलों को अपलोड करना शामिल है पर विस्तार करने के लिए

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

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

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

सिग्नलआर का उपयोग करने पर मैंने जो उदाहरण देखा है, उसे एक दृश्य में उपयोग किया जा रहा है, लेकिन यह वास्तव में काम नहीं करता है अगर आपको इसे कई विचारों में चाहिए (आप केवल hub.start() को कॉल नहीं कर सकते)?

क्षमा करें, अगर यह अभी भी समझ में नहीं आता है तो मैं कुछ कोड या कुछ पोस्ट करूंगा।

+1

क्या आप कुछ और हल करने की कोशिश कर रहे समस्या का वर्णन कर सकते हैं? और आपने क्या प्रयास किया है? –

उत्तर

9

आप

$.connection.myHub.client.myMethod = function (/* ... */) { /* ... */ }; 

की

$.connection.myHub.on("myMethod", function (/* ... */) { /* ... */ }); 

बजाय का उपयोग करते हैं आप $.connection.hub.start() बुला के बाद क्लाइंट साइड हब तरीकों जोड़ सकते हैं;

+0

बढ़िया! वास्तव में वह तकनीक जिसे मैं ढूंढ रहा था। मैंने 'hub start के बाद सिग्नलआर इवेंट' जैसी चीजें google'd और कुछ कारणों को बस इस विकल्प का वर्णन करने वाला कुछ भी नहीं मिला! धन्यवाद halter73! – Adam

+0

न सिर्फ डुरंडल या हॉट टॉवेल, लेकिन इससे कोई भी एसपीए आवेदन लाभान्वित होता है। मैं बैकबोन, अंडरस्कोर ऐप पर काम कर रहा हूं और यह सिग्नलआर के साथ मेरे मुद्दों को पुश संदेशों को प्राप्त नहीं करता है। –

+1

मैं जोड़ूंगा कि कनेक्शन शुरू करने से पहले आपके पास प्रति हब तक कम से कम एक कॉलबैक होना चाहिए। इससे कोई फर्क नहीं पड़ता कि कॉलबैक नो-ऑप्स। एक बार ऐसा करने के बाद, आपको सिग्नलआर कनेक्शन खुला होने पर भी एक हटाए गए कॉलबैक जोड़ने में सक्षम होना चाहिए। – halter73

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