2013-05-27 6 views
6

birkaç modül sayfasında bulunmaktadır:Çalıştır eylem yüklenir

// 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 */ }); 
}); 

Ve tüm modüller çağrılır sonra (bütün Aboneliklerinizle yapılır) çağrılması gereken yöntem vardır:

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

olası çözüm modüllerini tanımlayıp Bu gibi yazmak ise:

// 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(); }); 

Ama sorun o d ifferent sayfaları, farklı modüllere sahip ki:

page1.cshtml: modül 1

page2.cshtml: modül 1, modül 2

yüzden yazamıyorum: gerektirir ([ 'signalr ',' modül 1 ',' modül 2 '], fuinction (s) {s.connect(); }); çünkü modül 2, sayfa2.cshtml'de tanımlanamayabilir.

+0

inşa etmek gerekir? Bunu başarmanın en iyi yolu bu olurdu. –

+0

İçten içe .. Size öneri deneyeceğim. Teşekkür ederim. – Jekas

cevap

3

En iyi yol, koşullu olarak bir dizi oluşturmak ve bunu gereksinim işlevine iletmek ve sonra, soruda anlattığınız gibi geri çağırma işleminizi tamamlamanızdır.

var modulesToLoad = []; 

// Build the array 

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

tek yüklemek ve yüklenen tüm olması tamamlanması kontrollerine, sonra temizlemek kod çalıştırmasına modüllerin takip etmek gerekir gerektirir içine bir nedenle aramalarınızı toplamak yapamıyorsanız

Bu düşünmek
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); 
}); 

, size şartlı sayfaları gereksinimlerine göre bir dizi oluşturmak ve ardından gerektiren görev ekseninde çalıştırılamadı bir gereklilik dizisini

+0

Teşekkürler. Koşullu yerleşik modüllerden oluşan bir dizi ile yaklaşımı kullandım. – Jekas