# Events

You can also bind events to endpoints to have more control over REST communications

  • success: emits when endpoint request successfully sent
  • error: emits when endpoint gets error
  • cancel: emits when endpoint canceled (error event not emitted on cancellation)
  • loading: emits when endpoint gets to loading
  • timeout: emits when endpoint gets timeout error

# Attach event listeners

You can add listeners on chimera property inside $options or directly on endpoint definition

<template>
  <div class="example-box">
    <ul v-if="users.data">
      <li
        v-for="user in users.data"
        :key="user.id"
      >
        {{ user.name }}
      </li>
    </ul>
    <button @click="users.reload()">
      Reload
    </button> <span v-if="users.loading">Loading...</span>
    <div>
      <p
        v-for="(ev, i) in events"
        :key="i"
      >
        {{ ev }} {{ i+1 }}
      </p>
    </div>
  </div>
</template>

<script>
export default {
  data () {
    return {
      events: []
    }
  },
  chimera: {
    $options: {
      on: {
        success () {
          this.events.push('"success" listener called on any endpoint')
        }
      }
    },
    users: {
      url: '/users',
      key: 'users',
      on: {
        success () {
          this.events.push('"success" listener called on users endpoint')
        }
      }
    }
  }
}
</script>

# Attach programmatically

Use on method to attach events to endpoints

export default {

    mounted () {
       this.$chimera.users.on('success', () => {
          console.log('!')
       })
    }
}
Last Updated: 3/20/2020, 12:15:01 PM