Этот вопрос закрыт для ответов, так как повторяет вопрос Как получить сумму результатов 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
  • Вопрос задан
  • 229 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
А в чём разница между вашими компонентами? В данных? Значит компонент должен быть один и принимать параметры. Ну а в остальном - вы вчера похожий вопрос задавали.
Ответ написан
Ваш ответ на вопрос

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

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