I have a main component that is used to display items using a loop:
<v-list-tile v-for="(item, index) in items" :key="item.title">
  ...
  <report type="item.type"> </report>
</v-list>
The report component is used to report abuse on the system, and report type may vary depending on the item from the parent loop.
As users are very unlikely to use report on a regular basis I would like to only load v-select elements when the Dialog (modal) is opened.
Using created or mounted triggers the loading method everytime the report component is generated and not when the report component is opened.
Is there a smart way to prevent this and only have the loading method within report being triggered only when the component is opened.
=== Report.vue file ===
=== This file is loaded in the parent component
<template lang="html">
      <v-dialog v-model="dialog" persistent max-width="800px" lazy>
        <v-btn icon slot="activator">
          <v-icon>error_outline</v-icon>
        </v-btn>
        <v-card>
          <v-card-title>
            <div class="headline"><v-icon large>error_outline</v-icon> Reporting</div>
          </v-card-title>
          <v-card-text>You are about to report the following {{ reportType }}: "<i>{{ reportContent.title }}</i>"
            <v-container v-if="this.$store.getters['report/getLoadedState']" grid-list-md >
            <v-layout wrap>
              <v-flex xs12 sm12>
                <v-select
                  label="Select a reason"
                  required
                  cache-items
                  :items="items"
                  item-text="title"
                  item-value="id"
                ></v-select>
              </v-flex>
              <v-flex xs12 sm12>
                <v-text-field
                  label="Please provide additional information here"
                  multi-line></v-text-field>
              </v-flex>
            </v-layout>
          </v-container>
          <v-container v-else grid-list-md>
            <v-layout>
              <v-flex xs12 sm12>
                Loading
              </v-flex>
            </v-layout>
          </v-container>
          </v-card-text>
          <v-card-actions>
            <v-spacer></v-spacer>
            <v-btn color="green darken-1" flat="flat" @click.native="cancel">Cancel</v-btn>
            <v-btn color="green darken-1" flat="flat" @click.native="report">Report</v-btn>
          </v-card-actions>
        </v-card>
      </v-dialog>
</template>
<script>
  export default {
    name: 'report',
    data () {
      return {
        dialog: false,
        items: this.$store.getters['report/getItems']
      }
    },
    props: ['reportType', 'reportContent'],
    methods: {
      cancel () {
        this.dialog = false
      },
      report () {
        this.dialog = false
      },
      loadReasons (type) {
        if (!this.$store.getters['report/getLoadedState']) {
          this.$store.dispatch('report/setItems', type)
        }
      }
    }
  }
</script>
<style lang="css" scoped>
</style>
PS 1: I'm not using JQuery and do not intend to use it
PS 2: Calling the method outside of the report component is not an option as I want to maximize reusability of this compenent and only pass arguments to it using props