2012-09-13 16 views
6

Así que estoy trabajando con jquery.flot y jquery.flot.selection y como define ({... carga los módulos de forma asíncrona estoy teniendo un problema porque la selección El plugin está intentando empujarse en $ .plot.plugins (que es creado por jquery.flot) pero en ese momento $ .plot.plugins todavía no está definido.requiere configuración de corrección - jquery.flot/jquery.flot.selection

Encontré que el argumento "shim" en require .config me ayude con esto, pero estoy teniendo ninguna suerte ... así que aquí está el resumen ... jquery.flot crea $ .PLOT y jquery.flot.selection se suma a $ .plot.plugins

lo que he intentado ...

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

también

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

mi complemento se parece a esto ..

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

También probé

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

¿Qué debo hacer ???

+1

Resulta que estoy usando RequireJs 1.0.4, así que no puedo confiar en la calza ... ¿Qué puedo hacer? – Joe

+0

Shim se inspiró en Use.js, que es un complemento para 1.x - http://tbranyen.com/post/amdrequirejs-shim-plugin-for-loading-incompatible-javascript –

+0

¡Impresionante! así que agregué esto a mi complemento "define ([" jquery "," lib/jquery.flot "," lib/use! lib/jquery.flot.selection "]," y esto a mi local requiere " rutas: { ... uso: '../../../../otherDirec/src/main/webapp/js/lib/use' }, use: { "../../ ../../ otherDirec/src/main/webapp/js/lib/jquery.flot.selection ": { deps: [" use! ../../../../ otherDirec/src/main /webapp/js/lib/jquery.flot "] } }" y sigo recibiendo un mensaje de error diciendo que el módulo 'lib/jquery.flot.selection' no está definido o no tiene una configuración 'use'. Asegúrese de que existe, agregue una configuración 'use', o no use use! en él – Joe

Respuesta

5

Para cualquier persona que se encuentre con esto en el futuro, RequireJS puede ser un poco opaco cuando se trata de diagnosticar problemas. Here's un ejemplo de trabajo de RequireJS 2 con jquery.flot y jquery.flot.selection, sin el módulo de uso.

Es un poco difícil distinguir qué es diferente entre este ejemplo y la pregunta anterior, ¡por lo tanto, la opacidad!

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); 
}); 
Cuestiones relacionadas