# Editor as Vue component
Vue-datagrid provides a way to render vue components as editor.
For this porpose we've invented webcomponent vue editor adapter (VGridVueEditor);
WARNING
This functionality is slightly decreasing overall grid render performance. If you are aiming for the faster render we are recommending to stick with native VNode render.
Define your editor.
TIP
You can access close and save callbacks in properties.
// SampleEditor.vue
<template>
<button v-on:click="iAmClicked">You clicked me {{ count }} times.</button>
</template>
<script>
export default {
props: ["rowIndex", "model", "close", "save"],
data: function () {
return {
count: 0,
};
},
methods: {
iAmClicked(e) {
this.count++;
},
},
};
</script>
TIP
For version vue 3+ use @revolist/vue3-datagrid
accordingly.
<template>
<div id="app">
<v-grid
:editors="gridEditors"
:source="rows"
:columns="columns"
></v-grid>
</div>
</template>
<script>
import VGrid, { VGridVueEditor } from "@revolist/vue-datagrid";
import VueEditor from "./SampleEditor";
import Vue from "vue";
const editor = VGridVueEditor(Vue.component("vueEditor", VueEditor));
export default {
name: "App",
data() {
return {
gridEditors: { button: editor },
columns: [
{
prop: "id",
editor: "button",
},
{
prop: "details",
},
],
rows: [
{
id: "My vue",
details: "My neighbour is Vue editor",
},
],
};
},
components: {
VGrid,
},
};
</script>
Check Sandbox (opens new window) for real live sample.