2012-09-13 9 views
6

Pracuję więc nad jquery.flot i jquery.flot.selection, a ponieważ define ({... ładuje moduły asynchronicznie, mam problem, ponieważ wybór plugin próbuje wepchnąć się do $ .plot.plugins (który jest tworzony przez jquery.flot), ale w tym momencie $ .plot.plugins wciąż nie jest zdefiniowanewymagają ustawienia shim- jquery.flot/jquery.flot.selection

Znalazłem, że argument "shim" w wymaganiu .config powinny mi w tym pomóc, ale mam nie szczęścia ... tak oto zbiegać ... jquery.flot tworzy $ .plot i jquery.flot.selection dodaje się do $ .plot.plugins

co próbowałem ...

shim:{ 
    'js/lib/jquery.flot':{ 
     exports:'$.plot' 
    }, 
    'js/lib/jquery.flot.selection':{ 
     deps:['js/lib/jquery.flot'] 
    } 
} 

również

shim:{ 
    'js/lib/jquery.flot.selection':['js/lib/jquery.flot'] 
} 

mój plugin wygląda następująco ..

define(['jquery','lib/jquery.flot','lib/jquery.flot.selection'], function() { 
(function($) { 
    // jQuery plugin definition 
..... 

Próbowałem też

define(['jquery'],function(){ 
require[('js/lib/jquery.flot.selection'],function(){ 
//jQuery plugin definition 
... 

Co mam zrobić ???

+1

Okazuje się, że używam RequireJs 1.0.4, więc nie mogę polegać na shim ... Co mogę zrobić? – Joe

+0

Shim został zainspirowany przez Use.js, który jest pluginem dla 1.x - http://tbranyen.com/post/amdrequirejs-shim-plugin-for-loading-incompatible-javascript –

+0

Awesome! więc dodałem to do mojej wtyczki "define ([jquery", "lib/jquery.flot", "lib/use! lib/jquery.flot.selection"], " i to do moich lokalnych wymaga" ścieżek: { ... użyj: "../../../../otherDirec/src/main/webapp/js/lib/use ' }, użycie: { " użycie: ../../ ../../ otherDirec/src/main/webapp/js/lib/jquery.flot.selection ": { deps: [" użyj! ../../../../ otherDirec/src/main /webapp/js/lib/jquery.flot "] } }" } i nadal pojawia się komunikat o tym, że moduł 'lib/jquery.flot.selection' jest niezdefiniowany lub nie ma konfiguracji 'use'. Upewnij się, że istnieje, dodaj 'use' config lub nie używaj use! na nim – Joe

Odpowiedz

5

Dla każdego, kto przypadkiem wpisze się w to w przyszłości, RequireJS może być trochę nieprzejrzysty, jeśli chodzi o diagnozowanie problemów. Here's przykład działania RequireJS 2 z jquery.flot i jquery.flot.selection, bez modułu use.

Trudno powiedzieć, co różni ten przykład od powyższego pytania, a więc nieprzejrzystość!

require.config({ 
    shim: { 
     'jquery': { 
      exports: '$' 
     }, 
      'jquery.flot': { 
      deps: ['jquery'], 
      exports: '$.plot' 
     }, 
      'jquery.flot.selection': { 
      deps: ['jquery.flot'] 
     } 
    }, 
    paths: { 
     'jquery': '//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min', 
      'jquery.flot': '//cdnjs.cloudflare.com/ajax/libs/flot/0.8.1/jquery.flot.min', 
      'jquery.flot.selection': 'https://raw.github.com/flot/flot/master/jquery.flot.selection' 
    } 
}); 

require(['jquery', 'jquery.flot', 'jquery.flot.selection'], function ($) { 
    // jQuery plugin definition 
    console.log($.plot); 
    $('#x').text($.plot.plugins); 
});