Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

274
Vistas
¿Cómo funciona pasar datos/información de un controlador a otro (js mvc)?

Me han encargado crear una aplicación web vanilla js mvc. Nunca he hecho esto antes y tengo un conocimiento limitado de cómo se deben hacer las cosas (mejores prácticas y similares). Me gustaría algún consejo sobre cómo se pueden pasar datos/información entre los controladores. Sería bueno si pudiera usar el patrón Observer (he visto mucho contenido y explicaciones sobre esto y entiendo lo básico, pero ¿puedo implementarlo por mi cuenta al 100 por ciento? No.). He buscado respuestas anteriores aquí, pero aún no puedo entenderlas.

Déjame darte un ejemplo de mi código hasta ahora. Dentro de GeneralModel.js, que se usa solo para hacer AJAX y mostrar elementos:

 export default class GeneralModel{ url = 'webshop_clothes.csv'; constructor(){ } sortValues = { "Id": "id", "Product name": "product_name", "Price usd": "price_usd", "Size": "size", } loadData = () =>{ return fetch(this.url) .then(data=>data.text()) .then(dataAsText=>{ let result = dataAsText.split('\r\n'); let properties = result.shift().split(','); this.data = result.map(row=>row.split(',').reduce((acc,item,i)=>{ acc[properties[i]] = item; return acc; }, {})); return this.data; }); } loadProperties = () =>{ return fetch(this.url) .then(data=>data.text()) .then(dataAsText=>{ let result = dataAsText .split('\r\n'); [,...this.properties] = result .shift() .split(','); return this.properties; }); }

loadProperties se usa dentro de mi SortingController para generar los campos para la clasificación, en función de lo que se debe hacer la clasificación. Código dentro de SortingController:

 import GeneralModel from "../general-output/general-model.js"; import SortView from "../sorting-output/sorting-view.js"; export default class SortController{ constructor(pub){ this.model = new GeneralModel(); this.view = new SortView(this.onClick); this.pub = pub; this.model.loadProperties() .then(data=>{ this.view.render(data); }); } onClick = (ev)=>{ this.pub.notifySubscribers(this.pub.events.SORT_ITEMS_BY, ev.target.innerText) } }

Me han dicho que cargar el modelo general dentro de mi controlador de clasificación no es una buena idea. Pensé que lo reutilizaría. Sin embargo, esto significa que estoy haciendo dos solicitudes AJAX cuando solo se puede hacer una. También tengo una clase Publisher que intenta implementar el patrón de observador. Puedo modificar la publicación y agregarla o simplemente puedo agregar todo el repositorio si eso es mejor.

Me gustaría saber cuál es una mejor manera de compartir/enviar información entre Controladores si mi forma no es buena. Esa es mi pregunta. Todas y cada una de las críticas son bienvenidas, solo me gustaría aprender más sobre MVC. Cualquier recurso/libros/cursos o simplemente consejos son bienvenidos ya que soy un novato.

about 4 years ago · Santiago Gelvez
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda