【发布时间】:2016-03-14 14:48:29
【问题描述】:
我在使用vuejs 1.0 $set() 时遇到问题,我创建了一个jsfiddle。 addQty1 工作并更新显示,而 addQty2 仅更新数据。
知道为什么会这样吗?
var TicketLine = Vue.extend({
template: '#ticketLineTemplate',
props: ['index', 'lines'],
data: function() {
var line = this.lines[this.index];
return {
qty: line.qty,
label: line.label
};
},
methods: {
addQty1: function() {
var line = this.lines[this.index];
line.qty++;
this.lines.$set(this.index, $.extend({}, line));
},
addQty2: function() {
var line = this.lines[this.index];
line.qty++;
this.lines.$set(this.index, line);
}
}
});
var lines = [{
qty: 1,
label: 'Pizza'
}, {
qty: 2,
label: 'Café'
}, {
qty: 1,
label: 'Soda'
}];
new Vue({
el: "#app",
data: {
lines: lines
},
components: {
'ticket-line': TicketLine
}
});
<div id="app">
<div id="ticket">
<table class="table">
<thead>
<th>Qty</th>
<th>Label</th>
<th>Actions</th>
</thead>
<tbody>
<template v-for="line in lines">
<ticket-line :index="$index" :lines="lines"></ticket-line>
</template>
</tbody>
</table>
</div>
<script type="text/x-template" id="ticketLineTemplate">
<tr>
<td>{{ qty }}</td>
<td>{{ label }}</td>
<td>
<button type="button" v-on:click="addQty1()">addQty1</button>
<button type="button" v-on:click="addQty2()">addQty2</button>
</td>
</tr>
</script>
</div>
【问题讨论】:
标签: javascript vue.js