Advertisement
Guest User

Untitled

a guest
Jul 12th, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <template>
  2.     <form :method=method :action=action>
  3.         <slot></slot>
  4.         <slot name="buttons">
  5.         <button v-on:click.prevent="submit(requesttype, action)" type="submit" class="btn btn-primary">Speichern</button>
  6.         </slot>
  7.     </form>
  8. </template>
  9.  
  10. <script>
  11.     export default {
  12.         data () {
  13.             let data = {};
  14.             let errors = require('../errors/errors');
  15.             data[errors] = errors;
  16.             for (let property in this.originalData) {
  17.                 data[property] = this[property];
  18.             }
  19.             return data;
  20.         },
  21.  
  22.         props: {
  23.             "method": { required: true },
  24.             "action": { required: true },
  25.             "requesttype": { required: true },
  26.         },
  27.         computed: {
  28.  
  29.         },
  30.         methods: {
  31.             reset() {
  32.                 for (let field in this.originalData) {
  33.                     this[field] = '';
  34.                 }
  35.  
  36.                 this.errors.clear();
  37.             },
  38.             post(url) {
  39.                 return this.submit('post', url);
  40.             },
  41.             put(url) {
  42.                 return this.submit('put', url);
  43.             },
  44.             patch(url) {
  45.                 return this.submit('patch', url);
  46.             },
  47.             delete(url) {
  48.                 return this.submit('delete', url);
  49.             },
  50.             submit(requestType, url) {
  51.                 return new Promise((resolve, reject) => {
  52.                     axios[requestType](url, this.data)
  53.                         .then(response => {
  54.                             this.onSuccess(response.data);
  55.  
  56.                             resolve(response.data);
  57.                         })
  58.                         .catch(error => {
  59.                             this.onFail(error.response.data);
  60.  
  61.                             reject(error.response.data);
  62.                         });
  63.                 });
  64.             },
  65.             onSuccess(data) {
  66.                 alert(data.message); // temporary
  67.  
  68.                 this.reset();
  69.             },
  70.             onFail(errors) {
  71.                 this.errors.record(errors);
  72.             }
  73.  
  74.         }
  75.     }
  76. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement