category.vue 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <template>
  2. <main>
  3. <div class="container-fluid c-section">
  4. <div class="row">
  5. <div class="col-sm-3"></div>
  6. <div class="col-sm-6">
  7. <div class="a-spacing-top-medium"></div>
  8. <h2>Add a new Category</h2>
  9. <form action="">
  10. <div class="a-spacing-top-medium">
  11. <label for="">Type</label>
  12. <input v-model="type" type="text" class="a-input-text" />
  13. </div>
  14. <hr/>
  15. <!--Button-->
  16. <div class="a-spacing-top-large">
  17. <span class="a-button-register">
  18. <span @click="onAddCategory" class="a-button-text">Add Category</span>
  19. </span>
  20. </div>
  21. </form>
  22. <br/>
  23. <ul class="list-group-item">
  24. <li v-for="category in categories" :key="category._id">{{ category.type }}</li>
  25. </ul>
  26. </div>
  27. <div class="col-sm-3"></div>
  28. </div>
  29. </div>
  30. </main>
  31. </template>
  32. <script>
  33. export default {
  34. async asyncData ({ $axios }) {
  35. try {
  36. let response = await $axios.$get('http://localhost:3000/api/categories')
  37. return {
  38. categories: response.categories
  39. }
  40. } catch (err) {
  41. console.log(err)
  42. }
  43. },
  44. data () {
  45. return {
  46. type: ''
  47. }
  48. },
  49. methods: {
  50. async onAddCategory () {
  51. try {
  52. let data = { type: this.type }
  53. let response = await this.$axios.$post('http://localhost:3000/api/categories', data)
  54. this.categories.push(data)
  55. } catch (err) {
  56. console.log(err)
  57. }
  58. }
  59. }
  60. }
  61. </script>