IIC2513-2020-1 / syllabus

Material del curso
35 stars 3 forks source link

Variables de ejs vs variables del script #75

Closed vtespinosa closed 4 years ago

vtespinosa commented 4 years ago

Hola, necesito cambiar el valor de una variable, que paso desde el archivo de routes de mi modelo, en la vista,. En primer lugar intenté hacer algo asi:

<script>
   const x = 1;
   <% y %> = x;
</script>

Lo anterior no funcionó. Busqué mucho en google y varias páginas dicen que los valores de las variables que paso desde el controlador a la vista no se pueden cambiar, pero si hago esto: <% x += 1 %> si funciona, por lo que necesito encontrar una forma de acceder a las variables que creo dentro del script desde los tags ejs para poder hacer algo asi:

const x = 1;
<% y = x %>

o

const x = 1;
<% y += x %>

Existe alguna manera de hacer esto? Muchas gracias de antemano.

gpvidal commented 4 years ago

Hola @vtespinosa ,

Cuando hablas de la vista es que lo quieres hacer en el ejs? o cuando el usuario visita el sitio?

Saludos,

vtespinosa commented 4 years ago

@gpvidal, quiero que cuando el usuario visite el sitio y arrastre un elemento a otro, cuando se ejecute la función drop(event), incluida en el tag <div ondragover="algo" ondrop="drop(event)">, se le asigne el valor de event.dataTransfer.getData("text") a una variable del ejs.

Saludos y gracias por la ayuda.

gpvidal commented 4 years ago

Hola @vtespinosa ,

Lo que mencionas no es posible, ya que ambas variables viven en mundos distintos. Mañana, al menos en mi sección (muy invitado si quieres), revisaremos este tema.

Saludos!

PD: También revisaremos que no se deberían ocupar los atributos on<event> en el HTML, pero para que te hagas una idea, es la misma explicación que con los estilos :wink:

vtespinosa commented 4 years ago

@gpvidal gracias por la respuesta y la invitación.

Como lo que estoy intentando de hacer es agregar una boleta a una carpeta, no se puede hacer lo que estaba intentando y no se debería ocupar los atributos on<event>, esto me genera un problema gigante ya que cualquier otra forma de agregar una boleta a una carpeta, que no sea arrastrando la boleta me parece muy poco intuitiva. Hay alguno otra forma de lograr esto, o estoy pidiendo mucha información? De todas maneras voy a investigar. Muchas gracias por la ayuda.

gpvidal commented 4 years ago

Hola @vtespinosa ,

Agregué un PR en my-university para agregar código javascript del lado del cliente: https://github.com/IIC2513-2020-1/my-university/pull/6

Lo que deberías intentar de hacer es, cargar toda la información, hacer todas las operaciones (todos los drag and drop) y deberías tener un botón de save para enviar esa información nuevamente al servidor y actualizar la base de datos con la información ¿Eso te sirve?

Saludos,

topkaj commented 4 years ago

Hola @gpvidal,

En mi caso necesito solamente cargar una variable de ejs en un script, ¿hay alguna alternativa a usar <div id="myId" data-myVar="<%= ejsVar%>" /> y posteriormente en el script capturar el atributo data-myVar?, pues no me gustaría que ejsVar estuviese visible para el usuario.

gpvidal commented 4 years ago

Hola @topkaj ,

Por favor abre otra issue. Esta está cerrada hace 24 días! y dificulta buscar soluciones a tus compañeros si tienen el mismo problema. Puedes referenciar esta issue en la nueva.

Saludos,