2012-01-05 14 views
7

Normalde require.js kullanarak bir omurga App yüklemek harici Geri arama sonrası require.js içinde omurga uygulamasını başlatmak için. uygulama DOM manipülasyonu gerektiriyorsanasıl bazı bağımlılıkları yükler ve uygulamayı başlattı sayfa yüklemesi</p> <pre><code><script data-main="js/main" src="js/libs/require/require.js"></script> </code></pre> <p>sırasında

, sen domReady eklentisi

require(['domReady','app' ], function (domReady, App) { 
    domReady(function (App) { 
    App.Initialize() 
    }): 
}); 

kullanabilirsiniz Ama başvurum Flash API ile iletişim kurar. Flaş eklenti bitene kadar beklemem gerek kendi xml. Bu yapıldığında javascript'e bir geri arama başlatıyorum. Bu geri bildirimin, app.initialize() işlevinin, require.js

'daki bağımlılıklar ile tetiklenmesi gerekir. İlk yöntem ve ikinci yöntem (dom için bekletme), flaş api'nin henüz hazır olmadığından emin olmaz. Uygulamayı nasıl başlatabilirim, böylece app.js'nin bağımlılıkları var ve flash api mevcut. Ya formüle farklı: Görünüşe göre, bu yeterli olacaktır: Nasıl

Güncelleme bir javascript olay/geri arama require.js sunabilmesi

<script data-main="js/main" src="js/libs/require/require.js"></script> 
<script type="text/javascript"> 
    function init(){ 
     require(['framework/app'], function(App){ 
      App.initialize(); 
     }); 
    }  
</script> 

flaş eklentisi sadece window.init çağırabilirsiniz() uygulamayı başlatmak için Dezavantajı, uygulama başlatıldığında jQuery gibi şeyler yüklenir. Bu, eşyaların gösterilmesinden önce küçük bir gecikmeye yol açabilir.

ben organının başı/sonu jquery yüklediğinizde, require.js

cevap

0

I (çok bilmiyorum/yeniden jquery başka bir kopyasını örneğini veya önbellek/dom okurdum, eğer eonder aslında tarayıcıda Flash hakkında herhangi bir şey) ancak Flash yüklendikten JavaScript ile algılamak için bir yol olup olmadığını:

  1. Flaş bir JavaScript küresel değişkeni değiştirmek olun
  2. Flaş Make bazı öğelere bir öznitelik eklemek

Daha sonra, bu koşulu (örneğin, her 1 saniyede bir) denetleyen bir JavaScript işlevi oluşturabilir ve onaylandıktan sonra uygulamayı başlatabilirsiniz. Bu işlevi oluşturmak için setInterval(function, time) kullanın. Tekrar yüklenmediğinden emin olmak için uygulamanızı yükledikten sonra aralığı temizlediğinizden emin olun.

1

Belirtilen gereksinim modülleri için 'dışa aktarma' tanımlamanıza izin veren requirejs shim config öğesinden yararlanabilirsiniz. Bu ihracat küresel bağlamda önbelleğe alınan değer olacaktır ve geri çağırma işlevi kullanmak kadar kullanılabilir olacaktır: Buradan

<script data-main="js/main" src="js/libs/require/require.js"></script> 
<script type="text/javascript"> 
    requirejs.config({ 
     shim: { 
      'framework/app': { 
       exports: 'App' 
      } 
     } 
    }); 
    require(['framework/app'], function(App){}); 
</script> 

, sadece arayabilecek bir javascript işlevini geri arar kodunuzu:

App.initialize(); 
+0

Cevabınız için teşekkür ederim, iki yıl olmasına rağmen :) Şimdi çalışıyorsa gerçekten test edemiyorum. – Jareish