main.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. const DISABLED = "disabledButton";
  2. const app = new Vue({
  3. el: "#app",
  4. // Computer properties are cached until dependencies change.
  5. // => cheaper than methods.
  6. computed: {
  7. image() {
  8. const image = this.variants[this.selectedVariant].variantImage;
  9. return image;
  10. },
  11. inStock() {
  12. return this.variants[this.selectedVariant].variantQuantity > 0;
  13. },
  14. title() {
  15. return [this.brand, this.product].join(' ');
  16. }
  17. },
  18. data: {
  19. brand: "Vue Mastery",
  20. cart: 0,
  21. description: "Chaussettes montantes",
  22. details: [
  23. "80% cotton",
  24. "20% polyester",
  25. "Gender-neutral",
  26. ],
  27. inventory: 15,
  28. link: "https://www.google.com/search?q=vuejs+socks",
  29. onSale: false,
  30. product: "Socks",
  31. selectedVariant: 0,
  32. sizes: [34, 36, 38, 40, 42, 44, 46],
  33. variants: [
  34. {
  35. variantId: 2234,
  36. variantColor: "green",
  37. variantImage: "./assets/img/vmSocks-green-onWhite.jpg",
  38. variantQuantity: 10,
  39. },
  40. {
  41. variantId: 2235,
  42. variantColor: "blue",
  43. variantImage: "./assets/img/vmSocks-blue-onWhite.png",
  44. variantQuantity: 0,
  45. },
  46. ]
  47. },
  48. methods: {
  49. addToCart(mouseEvent) {
  50. if (this.variants[this.selectedVariant].variantQuantity < 0) {
  51. this.variants[this.selectedVariant].variantQuantity = 0;
  52. return;
  53. }
  54. this.variants[this.selectedVariant].variantQuantity--;
  55. this.cart++;
  56. if (this.variants[this.selectedVariant].variantQuantity <= 0) {
  57. this.variants[this.selectedVariant].variantQuantity = 0;
  58. }
  59. },
  60. updateImage(index) {
  61. this.selectedVariant = index;
  62. }
  63. },
  64. });