Estoy creando una aplicación Vue y estoy usando Dojox para algunas cosas gráficas.
En el gancho montado de uno de mis componentes trato de crear una superficie. Sin embargo, esto solo funciona la mitad del tiempo.
mounted() { this.surface = dojox.gfx.createSurface("Editor", "100%", 700) }La otra mitad de las veces recibo el siguiente error: dojox.gfx.createSurface no es una función . Cargo dojo y dojox en mi archivo index.html que se ve así:
<head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link rel="icon" href="<%= BASE_URL %>favicon.ico"> <title><%= htmlWebpackPlugin.options.title %></title> <script src="//ajax.googleapis.com/ajax/libs/dojo/1.14.1/dojo/dojo.js"></script> <script type="text/javascript" charset="utf-8" src="//ajax.googleapis.com/ajax/libs/dojo/1.11.2/dojox//gfx.js"></script> </head>¿Qué está causando este error y cómo podría solucionarlo?
EDIT1: al usar console.log para ver si dojox está definido, mostrará que está definido. También lo es dojox.gfx, que tiene un método 'createSurface'. Sin embargo, una vez que quiero llamar al método, no está definido.
EDIT2: parece tener que ver con la velocidad a la que se carga la biblioteca. Cuando configuro un tiempo de espera como este
setTimeout(() => { this.surface = dojox.gfx.createSurface("Editor", "100%", 700) }, 1000)Básicamente funcionará el 99% del tiempo. Ahora solo tengo que averiguar cómo hacer que el componente espere con la carga hasta que