Events

It allows us easily to emit and handle all kind of events, including events between components.

When you create app instance or any other component using API, you can pass event handler on app/component initialization in parameter:

It also possible to add/remove event handlers using the following instance methods:

Add Event Handlers

  1. var app = new Framework7({/*...*/});
  2. var popup = app.popup.create({/*...*/});
  3. app.on('pageInit', function (page) {
  4. // do something on page init
  5. app.on('popupClose', function (popup) {
  6. // do something on popup open
  7. });
  8. popup.on('open', function (popup) {
  9. // do something on popup open
  10. // Once handler, will work only once
  11. popup.once('close', function (popup) {
  12. // do something on popup close
  13. });

Add Multiple Handlers

  1. app.on('popupOpen popupClose', function (popup) {
  2. // do something on popupOpen and popupClose
  3. });

Remove Event Handlers

Named function handler can be removed:

Remove All Handlers

If we don’t pass second handler argument to .off method then we will remove all handlers assigned for this event:

  1. app.off('tabShow');

Emit Events

And of course we can emit events and any kind of custom events we may need:

  1. app.on('myCustomEvent', function (a, b) {
  2. console.log(a); // -> 'foo'
  3. console.log(b); // -> 'bar'
  4. app.emit('myCustomEvent', 'foo', 'bar');

If this is not what you want, it is possible to emit so called local events on components. In this case we need to prefix event name with **local::**

  1. app.on('something', function () {/*...*/});
  2. popup.on('something', function () {/*...*/});
  3. popup.emit('local::something'); // will only trigger "something" event assigned to popup instance above

Event handler context (this) will always point to instance where it was assigned:

  1. app.on('popupOpen', function () {
  2. console.log(this); // -> app instance
  3. });
  4. popup.on('popupOpen', function () {

Current events emitter API on Framework7 classes is also very useful to create custom events for communication between app components and modules.

To create new events bus we need to call new Framework7.Events():