@KORICA67

Выбор вариативной опции товара Vue js?

Есть такой вот код в формате
"products":[
  {
    "badge":"новинка",
    "image": "8.jpg",
    "sku":"420гр",
    "name": "Болоньезе",
    "except":"Томатный соус, моцарелла, красный лук, фарш, помидор",
     "price":369,
     "id": "1",
     "avalible": true,
     "category":"Роллы",
     "type":"pizza",
     "variations":
     [

      { 
      "id":"1110",
      "size":"25",
      "weight":"720гр",
      "price":500},

    { "id":"3335",
      "size":"33",
      "weight":"720гр",
      "price":1020
      },
      {"id":"3338",
        "size":"40",
        "weight":"720гр",
        "price":1020
        }
    ],
    "variation_id":222
},


Есть такая вьюшка
<template>

    <div class="ar-catalog-item">
        <span class="ar-catalog-item__badge">
            <img :src="('../assets/images/' + product_data.badge)" alt="">
            {{  product_data.badge  }}
        </span>

        <img class="ar-catalog-item__img" :src="require('../assets/images/' + product_data.image)" alt="img">
        <p class="ar-catalog-item__sku">{{  product_data.sku  }}</p>
        <p class="ar-catalog-item__name">{{  product_data.name  }}</p>
        <p class="ar-catalog-item__except">{{  product_data.except  }}</p>
        <p v-if="product_data.type == 'pizza'" class="ar-catalog-item_sku_variations">Выберите размер</p>

        <ar-variation
         :options="product_data.variations"
          @select="mySelect()">
        </ar-variation>

        <div class="variations"
         v-for="variation in product_data.variations" 
         :key="variation.id">
            <a class="ar-variable" 
            :class="{ active: isActive[variation.id] }" 
            @click="selectSize(variation.id)">
                Здесь: {{  variation.price  }}
            </a>
        </div>



        <div class="ar-catalog-item-bottom">
            <p class="ar-catalog-item-bottom__price"> Цена: {{  product_data.price  }}₽</p>


            <button @click="addToCart" class="ar-catalog-item-bottom__add_to_cart_btn btn">хочу</button>
            <!-- <div class="ar-catalog-item-qty">
                <span 
                v-if="product_data.quantity > 1"
                 class="ar-catalog-item-qty_btns">
                    <button class="item_quantity_btn"
                     @click="decrementInProductCard">-</button>
                    {{ product_data.quantity }}
                    <button class="item_quantity_btn" 
                    @click="addToCart">+</button>
                </span>
            </div> -->
        </div>
    </div>

</template>

<script>


import { mapActions } from 'vuex';
import arVariation from './ar-variables.vue'


export default {
    name: 'ar-catalog-item',
    components: {
        arVariation
    },

    props: {
        product_data: {
            type: Object,
            default() {
                return {

                }
            }
        },


    },

    data() {

        return {

            isActive: {
                type: Object
            },
            selected: ''
            ,



        }
    },

    created() {


    },

    computed: {

    },

    methods: {
        mySelect() {
            this.$emit('select')

        },



        selectSizes(size) {
            let vm = this;
            // i == i || 0
            // vm.selectedSize = vm.product_data.variations[i]
            vm.$set(vm.isActive, (size) || !vm.isActive, [size]);

            console.log('size checked')

        },




        ...mapActions([
        ]),
        //* Кнопки отвечающие за действие увелечения и убавления количества в корзине из карточки товара *//

        addToCart() {
            this.$emit('addToCart', this.product_data); //* Добавляем в корзину товар

        },

        decrementInProductCard() {  //* Убавляем товар
            let pd = this;
            pd.$emit(
                'decrementInProductCard',
                pd.product_data.quantity--)

        }



    },
    mounted() {
        this.$set(this.product_data, 'quantity', 1)

    }
}


</script>
Что является карточкой товара ,который день уже сижу ломаю голову ,пытаюсь понять,как при смене вариативной опции товара в данном случае размера менять в карточке товара стоимость и вес
  • Вопрос задан
  • 187 просмотров
Решения вопроса 1
@exmach
Frontend Developer
Записывать индекс выбранной вариации и выводить на странице через computed что-то вроде basePrice + variations[index].price и тем же образом с весом? Ну, разумеется, с обработкой варианта, когда ни одна вариация не выбрана.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы