Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <template>
- <form :method=method :action=action>
- <slot></slot>
- <slot name="buttons">
- <button v-on:click.prevent="submit(requesttype, action)" type="submit" class="btn btn-primary">Speichern</button>
- </slot>
- </form>
- </template>
- <script>
- export default {
- data () {
- let data = {};
- let errors = require('../errors/errors');
- data[errors] = errors;
- for (let property in this.originalData) {
- data[property] = this[property];
- }
- return data;
- },
- props: {
- "method": { required: true },
- "action": { required: true },
- "requesttype": { required: true },
- },
- computed: {
- },
- methods: {
- reset() {
- for (let field in this.originalData) {
- this[field] = '';
- }
- this.errors.clear();
- },
- post(url) {
- return this.submit('post', url);
- },
- put(url) {
- return this.submit('put', url);
- },
- patch(url) {
- return this.submit('patch', url);
- },
- delete(url) {
- return this.submit('delete', url);
- },
- submit(requestType, url) {
- return new Promise((resolve, reject) => {
- axios[requestType](url, this.data)
- .then(response => {
- this.onSuccess(response.data);
- resolve(response.data);
- })
- .catch(error => {
- this.onFail(error.response.data);
- reject(error.response.data);
- });
- });
- },
- onSuccess(data) {
- alert(data.message); // temporary
- this.reset();
- },
- onFail(errors) {
- this.errors.record(errors);
- }
- }
- }
- </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement