0👍
✅
You need to pass the current payment to your togglePaymentReported
method for it to receive it as an argument.
pb = Vue.extend({
template: '#paybutton-template',
props: ['payment'],
methods: {
toggle: function() {
this.$emit('toggle');
}
}
});
vm = new Vue({
el: '#app',
components: {
'payment-button': pb
},
data: {
payments: []
},
methods: {
handleToggle: function(payment) {
payment.paid = !payment.paid;
}
},
mounted: function() {
// Simulating setting from ajax
setTimeout(() => {
this.payments = [{
id: 1,
paid: false
}, {
id: 2,
paid: false
}];
}, 800);
}
});
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.0.1/vue.min.js"></script>
<div id="app">
<payment-button v-for="payment in payments" :payment="payment" v-on:toggle="handleToggle(payment)"></payment-button>
</div>
<template id="paybutton-template">
<div>
{{payment.id}}: {{payment.paid}}
<button @click="toggle">Pay</button>
</div>
</template>
Source:stackexchange.com