main.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. flashSale() {
  15. if (this.onSale) {
  16. return `Vente flash ${this.product} ${this.brand}. Plus que 10 minutes!`;
  17. }
  18. },
  19. title() {
  20. return [this.brand, this.product].join(' ');
  21. }
  22. },
  23. data: {
  24. brand: "Vue Mastery",
  25. cart: 0,
  26. description: "Chaussettes montantes",
  27. details: [
  28. "80% cotton",
  29. "20% polyester",
  30. "Gender-neutral",
  31. ],
  32. inventory: 15,
  33. link: "https://www.google.com/search?q=vuejs+socks",
  34. onSale: false,
  35. product: "Socks",
  36. selectedVariant: 0,
  37. sizes: [34, 36, 38, 40, 42, 44, 46],
  38. variants: [
  39. {
  40. variantId: 2234,
  41. variantColor: "green",
  42. variantImage: "./assets/img/vmSocks-green-onWhite.jpg",
  43. variantQuantity: 10,
  44. },
  45. {
  46. variantId: 2235,
  47. variantColor: "blue",
  48. variantImage: "./assets/img/vmSocks-blue-onWhite.png",
  49. variantQuantity: 0,
  50. },
  51. ]
  52. },
  53. methods: {
  54. addToCart(mouseEvent) {
  55. if (this.variants[this.selectedVariant].variantQuantity < 0) {
  56. this.variants[this.selectedVariant].variantQuantity = 0;
  57. return;
  58. }
  59. this.variants[this.selectedVariant].variantQuantity--;
  60. this.cart++;
  61. if (this.variants[this.selectedVariant].variantQuantity <= 0) {
  62. this.variants[this.selectedVariant].variantQuantity = 0;
  63. }
  64. },
  65. updateImage(index) {
  66. this.selectedVariant = index;
  67. }
  68. },
  69. });