2012-10-11 15 views
7

Pracuję z szkieletem + requirejs + jquery i mam problem z ładowaniem wtyczki jQuery na mojej aktualnej stronie html (szablon html w backliku).Użyj wtyczki jQuery z modułami Backbone i Requirejs

Jest moja wymagają konfiguracji:

require.config({ 

    paths: { 
    // ... some code about backbone config 
    jquery: '/js/lib/jquery/jquery.min', 
    'jquery.camera' : '/js/jquery/jquery.camera' 
    }, 

    shim: { 
    // ... some code about backbone config 
    'jquery.camera': ['jquery'] 
    } 
}); 

W mojej strony html układ mam:

<script type='text/javascript' src='/js/jquery/jquery.camera.js'></script> 

iw mojej strony szablonu mam:

<script type="text/javascript"> 
    jQuery(function() { 

    jQuery('#test').camera({ 
... 
</script> 

Wreszcie przeglądarkę mezg:

Uncaught TypeError: Object [object Object] has no method 'camera' 

Masz jakiś pomysł?

W tym samym czasie mam inne pytanie, co jest najlepszym sposobem na to jakiś kod js w naszej bieżącej strony z kręgosłupem, requirejs itp

Dzięki :)

+0

Czy możesz podać pełny kod? Możesz użyć do tego jsfiddle.net. Wygląda na to, że wtyczka aparatu jQuery nie jest ładowana. Najlepsze miejsce do umieszczenia skryptów JS znajduje się u dołu strony ze względu na sposób, w jaki przeglądarki pobierają składniki. – maxwell

Odpowiedz

19

I rozwiązać podobny problem (Jquery.cookie) w ten sposób, ale moim problemem było to, że Jquery był ładowany, a następnie dołączano Jquery.cookie, ale wymaga już JQuery jako statycznego zasobu.

Tak więc przekazuję Jquery.Cookie do aplikacji i wstawia jquery.cookie tylko w moim zakresie zastosowań.

require.config({ 

    paths: { 
     'async'   : 'libs/async' 
     ,'jquery'   : 'libs/jquery' 
     ,'underscore'  : 'libs/underscore' 
     ,'backbone'  : 'libs/backbone' 
     ,'text'   : 'libs/text' 
     ,'jquery.cookie' : 'libs/jquery.cookie' // <-- cookie lives here 
    } 

    ,shim: { 
    'jquery': { 
     exports: '$' 
    } 
    ,'underscore': { 
     exports: '_' 
    } 
    ,'backbone': { 
     deps: ['underscore', 'jquery'], 
     exports: 'Backbone' 
    } 
    ,'jquery.cookie': {  //<-- cookie depends on Jquery and exports nothing 
     deps: ['jquery'] 
    } 
    } 
}); 

a następnie w głównej klasie App dodałem

require([ 
    'jquery' 
    ,'underscore' 
    ,'backbone' 
    ,'mapApp' 
    ,'jquery.cookie' //<- this is the real trick !!! 
], 
    function ($, _, Backbone, App) { 

Po tym udało mi się znaleźć jquery cookies.

BTW: nie ma potrzeby importowania JQuery.camera w HTML jeśli używasz Require.js go ściągnąć, chyba go używać poza zakresem Require.js.

+0

To działa! Podziękuj człowieku, ty rock;) – Majdi

+0

Dziękuję bardzo. Szukałem w sieci przez około 2 godziny, próbując to zrozumieć. Jedyne, co musiałem zrobić, to dodać "jquery.cookie" do głównej klasy App. Jednak wydaje mi się, że powinien być lepszy sposób na załadowanie wtyczek jQuery, naprawdę nie podoba mi się to, że jest 5 parametrów wymaganych() i tylko 4 są wysyłane do funkcji ... ale ta implementacja działa idealnie na teraz . Dziękuję Ci! – skcin7

+0

Nie potrzebujesz nawet shim config dla jquery-cookie, ponieważ jest to moduł kompatybilny z AMD i nie wymaga jquery – explunit

Powiązane problemy