2012-09-12 31 views
6

Con respecto al ejemplo BoilerplateJs, ¿cómo debemos ajustar esos módulos para que se intercomuniquen de tal manera una vez que el usuario haya realizado cualquier cambio en un módulo, los demás módulos relacionados se deben actualizar con el cambio realizado.¿Hay alguna manera de comunicarse entre sí con los módulos en boilerplatejs?

Por ejemplo, si hay un módulo para recuperar entradas del usuario como nombre y ventas y otro módulo para actualizar esos datos recuperados en una tabla o un gráfico, ¿puede explicar con algún ejemplo cómo ocurre la interconexión? ¿manejo?

Gracias!

Respuesta

3

En BoilerplateJS, cada uno de sus módulos tendrá su propio objeto moduleContext. Este objeto de contexto del módulo contiene dos métodos 'escuchar' y 'notificar'. Eche un vistazo a la clase de contexto en '/src/core/context.js' para más detalles.

El componente que necesita 'escuchar' el evento, debe registrarse para el evento especificando el nombre del evento y el manejador de devolución de llamada. El componente que plantea el evento debe usar el método de "notificación" para que los demás sepan que sucedió algo interesante (opcionalmente, pasar un parámetro).

Obtenga una actualización del último código BoilerplateJS de GitHub. Acabo de realizar cambios para hacer de ClickCounter un componente compuesto donde 'componente clickme' genere un evento y 'componente de lotería' escuche el evento para responder.

Código de notificar al Evento:

moduleContext.notify('LOTTERY_ACTIVITY', this.numberOfClicks()); 

Código para escuchar el Evento:

moduleContext.listen("LOTTERY_ACTIVITY", function(activityNumber) { 
    var randomNum = Math.floor(Math.random() * 3) + 1; 
    self.hasWon(randomNum === activityNumber); 
}); 
+0

por cierto .. BoilerplateJS utiliza una versión ligeramente modificada de [pubsub.js] (https: // github.com/federico-lox/pubsub.js) implementación de Federico Lucignano detrás de la escena. – Hasith

0

Me gustaría ver usando una biblioteca Publish-Subscribe, como Amplify. Usando esta técnica, es fácil para un módulo actuar como editor de eventos y otros para registrarse como suscriptores, escuchando y respondiendo a estos eventos de una manera muy desacoplada.

Como ya está utilizando Knockout, es posible que le interese probar primero el plugin knockout-postbox de Ryan Niemeyer. Más antecedentes en esta biblioteca es available here incluyendo a demo fiddle. Siempre puede cambiar a Amplificar más tarde si lo necesita.

Cuestiones relacionadas