Skip to content

Instantly share code, notes, and snippets.

@jameshulse
Created May 30, 2018 21:05
Show Gist options
  • Save jameshulse/08a84f6ed2bd7156fc3b54af861ec402 to your computer and use it in GitHub Desktop.
Save jameshulse/08a84f6ed2bd7156fc3b54af861ec402 to your computer and use it in GitHub Desktop.
Re-using component structure over multiple pages
<template>
<div>
<model-overview
:title="title"
:models="models"
@select="changeModel"
@add="createModel"
/>
<complex-form
v-if="selectedModel"
@update="updateModel"
:schema="formSchema"
/>
<slot v-else name="emptyState" />
</div>
</template>
<script>
export default {
name: 'FormPage',
props: ['api'],
methods: {
createModel() {
this.api.create();
},
...
}
};
</script>
<template>
<form-page
title="Page One"
:api="api"
>
<template slot="empty-state">
Empty state for page one
</template>
</form-page>
</template>
<script>
export default {
data() {
return {
api: { create() { axios.post('/model-one/') },
};
}
};
</script>
<template>
<form-page
title="Page Two"
:api="api"
>
<template slot="empty-state">
Empty state for page two
</template>
</form-page>
</template>
<script>
export default {
data() {
return {
api: { create() { axios.post('/model-one/') },
};
}
};
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment