VueJs 2.0循环组件和改变道具
VueJs 2.0 Looping components and changing props
我正试图找出处理循环组件的最佳方法。下面是一些示例代码:
这就是我想做的。我的主组件有支付数据,它循环到子组件。
<tr v-for="payment in payments"
is="component-payment-item"
:payment="payment
v-on:toggleReported="togglePaymentReported"">
</tr>
我的子组件,当它想要标记支付报告,它只是发送一个事件。父组件捕获的。因此,在父组件中,我尝试这样做。
togglePaymentReported(payment) {
payment.reported = ! payment.reported;
}
我知道这肯定会触发,但是这个更改永远不会返回到子组件。我不知道这是不是最好的处理方式。我想到的另一种方法是在数组中找到付款并以这种方式更改它,但我认为它将通过引用传递并向下传播到子组件。
在vue 1.0中,我只会在子组件上更改它。我知道这在ve2.0中是不可能的。这里的最佳实践是什么?
您需要将当前支付传递给您的togglePaymentReported
方法,以便将其作为参数接收。
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>
相关文章:
- 在按钮改变高度后使标题保持不变
- 剑道移动-绑定到ScrollView's”;改变“;以及“;改变“;事件
- 在php中改变变量,但在javascript中相同的变量不变
- 如何改变图标或图标的颜色在剑道ui网格过滤器
- 剑道UI图表-改变标记样式
- 剑道网格改变值使用外部文本框搜索
- ngRoute: URL改变了,但视图保持不变
- 改变窗口宽度的变量值
- 有可能改变“剑道数据化”吗?运行时的图表类型
- 使用angularjs动态改变变量值
- Javascript:根据隐藏变量值改变按钮文本
- 在Firefox剑道按钮文本不改变,而在IE和Chrome工作
- 剑道UI:在按钮点击事件上动态改变网格的数据源
- 我有一个按钮,可以在点击时改变文本,但不会变回来
- 如何根据javascript变量值改变元素的类
- 当改变剑道网格单元格值并恢复到保存前的原始值时显示脏标志
- 剑道分离器:如何改变“折叠”:false;拆分器属性为“可折叠”:true;点击按钮
- 改变剑道网格的模式角度
- Drupal商业启动重载js时,改变变体类型
- 如何在jQuery/jS中使用if语句改变变量值