Задать вопрос
Этот вопрос закрыт для ответов, так как повторяет вопрос Как получить сумму результатов 2-х компонентов?
@Anton8989

Как получать динамический вывод суммы из двух компонентов?

Имеется следующий код, где есть два компонента, пожалуйста подскажите как можно вывести общую сумму из этих двух компонентов при нажатых чекбоксах (данный html нужно, чтобы оставался прежним, он мне нужен будет для верстки:
<div id="app">
  SUM: {{ sum }}
<checkbox-counter1></checkbox-counter1>
<checkbox-counter2></checkbox-counter2>
</div>
)

код:

<div id="app">

    SUM: {{ sum }}


<checkbox-counter1></checkbox-counter1>
<checkbox-counter2></checkbox-counter2>


</div>


<script>

Vue.component('checkbox-counter1', {
  data: function () {
    return {
      items:[
        { value: [3.99, 1], checked: false },
        { value: [4, 2], checked: false },
        { value: [7, 3], checked: false },
      ],
      checkAll: false,
    }
  },
   computed: {
     total() {
      const val1 = this.items.reduce((acc, n) => acc + n.value[0] * n.checked, 0);
      this.$emit('change', val1);
      return val1;
    },
    day(){
        return this.items.reduce((acc, n) => acc + n.value[1] * n.checked, 0);
    }
    },
        watch: {
        checkAll(val) {
        this.items.forEach(n => n.checked = val);
        },
    },
  template: '<div><input v-for="n in items" v-model="n.checked" type="checkbox"> <div>{{ total }}</div> <div>{{ day }}</div> <div><input type="checkbox" v-model="checkAll"></div></div'
})



Vue.component('checkbox-counter2', {
  data: function () {
    return {
      items:[
        { value: [1, 1], checked: false },
        { value: [1, 1], checked: false },
        { value: [1,1], checked: false },
      ],
      checkAll: false,
    }
  },
   computed: {
     total() {
      const val2 = this.items.reduce((acc, n) => acc + n.value[0] * n.checked, 0);
      this.$emit('change', val2);
      return val2;
    },
    day(){
        return this.items.reduce((acc, n) => acc + n.value[1] * n.checked, 0);
    }
    },
        watch: {
        checkAll(val) {
        this.items.forEach(n => n.checked = val);
        },
    },
  template: '<div><input v-for="n in items" v-model="n.checked" type="checkbox"> <div>{{ total }}</div> <div>{{ day }}</div> <div><input type="checkbox" v-model="checkAll"></div></div'
})





new Vue({
  el: '#app',
  data: {
   
  },
  computed: {
    sum() {
       

    }
  }
});

5b6a9647e6354006619026.png
  • Вопрос задан
  • 237 просмотров
Подписаться 1 Простой 4 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Frontend-разработчик
    9 месяцев
    Далее
  • Loftschool
    Профессия Веб-разработчик
    7 месяцев
    Далее
  • Avenue
    Javascript. Frontend
    5 месяцев
    Далее
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
А в чём разница между вашими компонентами? В данных? Значит компонент должен быть один и принимать параметры. Ну а в остальном - вы вчера похожий вопрос задавали.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы