Incluyendo biblioteca dojo/dom a Spring Roo

¿Cómo es posible incluir y utilizar el dojo/domo biblioteca en primavera roo.

Esta:

 <script type="text/javascript">
                      dojo.require('dojo/dom');
                      dojo.ready(function remAttr(){
                          dojo.removeAttr('theId', 'value');
                        }
                     );
</script>

resulta en:

"NetworkError: 404 Introuvable - http://localhost:8131/suivitrc/resources/dojo/dom.js"
dom.js
Could not load 'dojo/dom'; last tried '../dojo/dom.js'

Alguien puede ayudarme porfavor?

preguntado el 27 de julio de 12 a las 14:07

que version de spring roo estas usando? -

3 Respuestas

Creo que la versión de dojo en roo actualmente es inferior a 1.7. Esto significa que puede eliminar la siguiente línea de su código porque la función remoteAttr es parte de dojo.js:

dojo.require('dojo/dom');

mira aquí: http://dojotoolkit.org/reference-guide/1.7/dojo/removeAttr.html

Respondido 28 Jul 12, 04:07

El espacio de nombres => a la ruta del módulo se recupera reemplazando los puntos (.), en resumen, debe reemplazar la barra inclinada con un punto. Su requerimiento debe ser

  dojo.require('dojo.dom'); // blocking call? djConfig.async must be false

Dado que el error está relacionado con la ruta especificada de dojo.require, esto significa que su dojo.js se encontró y se cargó (dojo.require no está indefinido), y baseUrl no es una preocupación para los módulos de dojo.

La cuestión es que está utilizando el cargador heredado para extraer un módulo AMD, en 1.7+ la declaración de requisitos tiene un aspecto diferente.

  // AMD loader form is
  function callbackFunctionOnComplete(dojoDom) { }
  require([ "dojo/dom" ], callbackFunctionOnComplete); // non-blocking

Así que cómo dojo.require funciona a continuación, supongamos que el parámetro que pasamos como cadena se llama 'módulo;

dojo.require = function(module) {
   var parts = module.split('.');

1 - obtener espacio de nombres de nivel superior (global)

   var packageName = parts.shift(); // first part is the package name

2 - obtenga el nombre del archivo (menos .js)

   var id = parts.pop(); // the last bit

3: traduce todo lo que hay en el medio a una ruta (en relación con la ubicación del paquete)

   var mid = parts.join("/");

4 - ubicación del paquete de búsqueda (desde el nivel superior)

   var fullpath = // in pseudo
       foreach dojoconfig.packages 
         iff obj.name == packageName 
            set to obj.location

5 agregue el resto y comience a descargar el módulo

   fullpath += mid + id + '.js'
   transport.get(..... fullpath .....)

Respondido 28 Jul 12, 18:07

Debe configurar dojo con dojo config. Prefiero el formulario explicado aquí:

http://dojotoolkit.org/reference-guide/1.7/dojo/_base/config.html#explicitly-creating-a-dojoconfig-object-before-including-the-dojo-core.

Y necesitas decirle al dojo dónde encontrar sus cosas. Un ejemplo:

 var dojoConfig =
  {
     baseUrl : "/yourApp/js",  // defines the js folder in your webapp
     tlmSiblingOfDojo: false,
     async: true,
     parseOnLoad:true,
     packages: [
        { name: "app", location: "app"}, // where it is in the js folder

        { name: "dojo", location: "lib/dojo" }, // where it is in the js folder
        { name: "dijit", location: "lib/dijit" },
        { name: "dojox", location: "lib/dojox" }
     ]
  };

Además, el formulario requerido que está utilizando está en desuso. Ver http://livedocs.dojotoolkit.org/dojo/require

Respondido 28 Jul 12, 12:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.