Skip to content
This repository was archived by the owner on Dec 1, 2023. It is now read-only.

pagekit/vue-event-manager

This branch is 1 commit ahead of master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

9f5b217 · May 6, 2021

History

78 Commits
Nov 28, 2018
Nov 28, 2018
Nov 28, 2018
Apr 18, 2020
Apr 18, 2020
Aug 8, 2018
Mar 15, 2018
Dec 17, 2018
Dec 22, 2017
Feb 2, 2018
Jan 25, 2019
Apr 26, 2017
Apr 26, 2017
Apr 18, 2020
Apr 18, 2020
Nov 28, 2018
May 6, 2021

Repository files navigation

vue-event-manager Build Downloads jsdelivr Version License

The plugin for Vue.js provides a declarative way to bind events to a global event manager. It uses the Vue lifecycle to automatically bind and unbind all events.

Features

  • Supports event priorities and Promise based asynchronous events
  • Supports latest Firefox, Chrome, Safari, Opera and IE9+
  • Supports Vue 2.0
  • Compact size 3KB (1,5KB gzipped)

Installation

You can install it via yarn or NPM.

$ yarn add vue-event-manager
$ npm install vue-event-manager

CDN

Available on jsdelivr or unpkg.

<script src="https://cdn.jsdelivr.net/npm/vue-event-manager@2.1.3"></script>

Example

Try the example on jsfiddle.

new Vue({

  created() {

    // trigger event
    this.$trigger('someEvent', {foo: 'bar'});

  },

  events: {

    // event handler (priority 0)
    someEvent(event, param) { ... },

    // event handler (priority 10)
    earlyEvent: {

        // handler callback
        handler(event, param) { ... },

        // a higher priority, means earlier execution
        priority: 10

    },

    // event handler (priority -10)
    lateEvent: {

        // handler callback
        handler(event, param) { ... },

        // a lower priority, means late execution
        priority: -10

    }

  }

});

Lets see how easy you can watch global events like reactive properties! (Like in this example). Let's assume you have a logout button in any component template and want it to be handled somewhere else without these nasty $on(...) and $off(...) lines in the created and destroy hooks.

<!-- logoutButton.vue -->
<button @click="$trigger('logout:the-user')">Logout</button>
// userManager.vue
export default {

  name: 'any-other-component',

  events: {
    // the event name string binds the method name string
    'logout:the-user': 'logout'
  },

  methods: {
    // this method will be called everytime the event occurs
    logout (event, param) {
      this.$http.post('/logout')
    }
  }

}

Changelog

Details changes for each release are documented in the release notes.

Contribution

If you find a bug or want to contribute to the code or documentation, you can help by submitting an issue or a pull request.

License

MIT