Как посчитать v-для объекта с условием if - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь посчитать totalPaids (транзакция.paid).

vue компонент:

          <tr v-if="studentFees" v-for="(studentFee, index) in studentFees">
            <td style="text-align: center;">{{ index+1 }}</td>
            <td style="text-align: center;">{{ studentFee.programe }}</td>
            <td style="text-align: center;">{{ studentFee.level }}</td>
            <td style="text-align: center;">{{ studentFee.course_fee }}</td>
            <td style="text-align: center;">{{ studentFee.student_amount }}</td>
            <td style="text-align: center;">{{ studentFee.discount }}</td>

            <div v-for="studentTransaction in studentTransactions">
              <div v-if="studentTransaction.s_fee_id == studentFee.s_fee_id">
                  <td style="text-align: center;">{{ totalPaids(studentTransaction.paid) }}</td>
              </div>
            </div>
       </tr>

или посмотреть https://i.stack.imgur.com/aGoLo.png

в vue метод:

totalPaids(values){
    console.log(values)
}

console.log : 3000, 5000, 2000, 1000

помогите суммированию.

Ответы [ 2 ]

0 голосов
/ 02 мая 2020

Рабочий фрагмент:

new Vue({
  el: '#app',
  data: {
    message: 'p',
    sum:0
  },
  methods:{
        totalPaids: function(values){
         this.$data.sum+= Number(values);
         console.log( this.$data.sum);
         return  this.$data.sum;
				}
  },
  mounted(){
  		for(var i=0;i<5;i++)
  			this.message=this.totalPaids(900);
  }
})
<script src="https://unpkg.com/vue"></script>

<div id="app">
  <p>{{ message }}</p>
</div>

Я бы предложил вам зарегистрировать переменную в разделе данных, чтобы сохранить ее состояние:

data: {
sum: 0,
},

Позже измените метод totalPaids вот так:

totalPaids(values){
 this.sum+= Number(values);
 console.log(sum);
 return sum;
}

Надеюсь, это поможет.

0 голосов
/ 02 мая 2020

Если ваши значения являются массивом чисел, вы можете использовать метод reduce в JavaScript. Таким образом, вы можете настроить свою функцию TotalPaid следующим образом:

totalPaids(values){
 var sum = values.reduce((sum, currentVal) => sum + currentVal);
 console.log(sum);
 return sum;
}

Так что это просто берет ваш массив значений, а затем просматривает их, добавляя текущее значение к сумме значений каждый раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...