【发布时间】:2019-03-14 00:35:34
【问题描述】:
我的 Vuetify 组件v-checkbox 有一个奇怪的行为。
- 重现步骤
codepen 为每个数组元素显示 3 个复选框。我想读取每个复选框附近复选框的实际状态(真或假)。
更改复选框的状态并查看它是否正确显示。
然后,删除{{ counter }} 行并再次检查。
- 预期行为
如果你选中一个复选框,它必须显示'true',反之,如果你取消选中它,它必须显示'false'。 'false' 是默认值。
实际行为
- 如果我用于检查/取消检查次数的计数器
{{ counter }}正在HTML 中打印,则复选框的状态正在正确显示。如果没有,状态将保持默认值。(但是,如果我 console.log 它,它们似乎已更改)。
这是我的代码: - HTML:
<div id="app">
<div v-for="(row, index) in rows" :key="index">
<v-layout row wrap>
{{ row.item }}:
<v-card flat v-for="(friend, idx) in row.friends" :key="`msg-${idx}`">
<v-checkbox
v-model="friend.selected"
:label="friend.name"
color="red"
hide-details
@click.native="counter++"
></v-checkbox>
{{ counter }}
{{ friend.selected }}
</v-card>
</v-layout>
<v-divider :key="`divider-${index}`"></v-divider>
</div>
</div>
- Vue
new Vue({ el: "#app", data () { return { friendsAdded: ['Friend 1', 'Friend 2', 'Friend 3'], items: ['Place 1'], counter: 0, } }, methods: { updateStatus(friend) { // Do something later }, }, computed: { rows() { const rows = []; for(let i = 0; i < this.items.length; i += 1) { const row = {}; row.item = this.items[i]; row.friends = []; for(let j = 0; j < this.friendsAdded.length; j += 1) { const friend = {}; friend.name = this.friendsAdded[j]; friend.selected = false; row.friends.push(friend); }; rows.push(row); } console.log('rows: ', rows); return rows; } }, })
这里是代码笔:https://codepen.io/rodrigoabb/pen/wYgzWW?editors=1010
我做错了什么? 如何在不必读取该值(或其他内容)的情况下实现预期行为?
谢谢!
【问题讨论】:
-
我不明白你期望发生什么。代码似乎在编写时工作。您是说您希望计数器值仅计算相应复选框被选中的次数吗?因此,如果第一个框被选中 10 次,其他框被选中 0 次,那么它会读取 10, 0, 0?
-
对不起,可能是我没有解释清楚。我想知道为什么,当我读取计数器(在 div 中)时,显示状态(真或假)的文本会更新,而当我删除计数器的 div 时,状态不会更新
标签: javascript vue.js vuetify.js