vue.jsvuetify.js

How can I add hyperlinks in my v-data-table?


I'm trying to get the emails and website as working links but just can't figure out how to do it.

I have my v-data-table:

<v-data-table :headers="headers" :items="companies" :search.sync="search" :items-per-page="5">

In my script I'm having first:

  data: () => ({
  headers: [
    { text: "Bedrijfsnaam", align: "start", value: "name" },
    { text: "Telefoon", value: "phone" },
    { text: "e-Mail", value: "email" },
    { text: "Website", value: "website" },
    { text: "Locatie", value: "location" },
    { text: "Actions", value: "actions", sortable: false }
  ],
  companies: [],
}),

And finally

methods: {
  initialize() {
    this.companies = [
      {
        name: "Lorem NV",
        phone: "+32 1 234 56 78",
        email: "info@lorem.be",
        website: "www.lorem.be",
        location: "Gent"
      },
    ];
  }

Solution

  • You can use the item.<name> slot. For example, where website is the property name:

        <template #item.website="{ value }">
            <a :href="value">
              {{ value }}
            </a>
        </template>
    

    OR email,

        <template #item.email="{ value }">
            <a :href="`mailto:${value}`">
              {{ value }}
            </a>
        </template>
    

    This only needs to be used for the fields you want to customize.

    Demo: https://codeply.com/p/CX3vXv6x6R