2013-05-27 5 views
6

वहाँ पृष्ठ पर कई मॉड्यूल हैं:भागो कार्रवाई सभी requirejs मॉड्यूल के बाद लोड किए गए हैं

// module 1 
require(['signalr'], function(s) { 
    s.subscribe('myhub1', function() { /* some code */ }); 
}); 

// module 2 
require(['signalr'], function(s) { 
    s.subscribe('myhub2', function() { /* some code 2 */ }); 
}); 

और वहाँ विधि उसके बाद सभी मॉड्यूल लागू कर रहे हैं लागू किया जाना चाहिए (सभी subscribtions किया जाता है) है:

require(['signalr'], fuinction (s) { s.connect(); }); 

संभव समाधान मॉड्यूल को परिभाषित करने और इस प्रकार लिख है:

// module 1 
define('module 1', ['signalr'], function(s) { 
    s.subscribe('myhub1', function() { /* some code */ }); 
}); 

// module 2 
define('module 2', ['signalr'], function(s) { 
    s.subscribe('myhub2', function() { /* some code 2 */ }); 
}); 
require(['signalr', 'module 1', 'module 2'], fuinction (s) { s.connect(); }); 

लेकिन समस्या यह है कि घ है ifferent पृष्ठों, विभिन्न मॉड्यूल है कहते हैं:

page1.cshtml: मॉड्यूल 1

page2.cshtml: मॉड्यूल 1, मॉड्यूल 2

तो मैं नहीं लिख सकते हैं: की आवश्यकता होती है ([ 'signalr ',' मॉड्यूल 1 ',' मॉड्यूल 2 '], fuinction (एस) {s.connect(); }); क्योंकि मॉड्यूल 2 को पेज 2.cshtml पर परिभाषित नहीं किया जा सकता है।

+0

निर्माण करने के लिए आप सशर्त पृष्ठों आवश्यकताओं के आधार पर एक सरणी का निर्माण नहीं किया जा सका और उसके बाद समारोह की आवश्यकता होती है के माध्यम से चलाने कि सक्षम होना चाहिए? यह हासिल करने का सबसे अच्छा तरीका प्रतीत होता है। –

+0

घुसपैठ .. मैं आपको सुझाव का प्रयास करूंगा। धन्यवाद। – Jekas

उत्तर

3

सशर्त रूप से एक सरणी बनाने और इसे आवश्यक फ़ंक्शन के माध्यम से पास करने का सबसे अच्छा तरीका होगा और फिर प्रश्न में उल्लेखित कॉलबैक में अपना पूरा प्रदर्शन चलाएं।

var modulesToLoad = []; 

// Build the array 

require(modulesToLoad, function (s) { 
    s.connect(); 
}); 

में एक भी आवश्यकता होती है आप लोड और पूरा है कि सभी लोड किया है पर एक जांच चलाने, तो अपने स्वच्छ ऊपर कोड को चलाने के लिए मॉड्यूल का ट्रैक रखने की आवश्यकता होगी किसी कारण से आप अपने कॉल कुल नहीं कर सकते

var checkIfLoaded = { 
    myhub1 : false, 
    myhub2 : false, 
    myhub3 : false 
} 

function checkIfReady(s) { 
    for (var prop in checkIfLoaded) { 
     if (! checkIfLoaded[prop]) { 
      return false; 
     } 
    } 

    // Completion code 
    s.connect(); 
} 

require(['myhub1'], function(s) { 
    checkIfLoaded.myhub1 = true; 
    checkIfReady(s); 
}); 

require(['myhub2'], function(s) { 
    checkIfLoaded.myhub2 = true; 
    checkIfReady(s); 
}); 

इस बारे में सोच रही थी, तो आप एक आवश्यकताओं सरणी

+0

धन्यवाद। मैं निर्भर मॉड्यूल की सशर्त निर्मित निर्मित सरणी के साथ दृष्टिकोण का उपयोग किया। – Jekas

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