初学Vue遇到的问题,尝试了几个小时才搞明白,大佬应该一眼就能看出什么问题吧……
需要注意,不要直接在JS中操作一个Vue data对象中不存在的属性,如果同时有通过v-model
绑定到该对象的不存在的属性时,会出现诡异的行为表现,console
中不会报出任何 warn
或 error
。
需求是,实现三个复选框,第一个复选框初始为选中状态,一开始写出来是这样的——
HTML1 2 3 4 5
| <div id="app" style="margin: 10px;"> <van-checkbox v-for="box in checkboxes" :key="box.id" v-model="box.selected"> 复选框 {{ box.title }} </van-checkbox> </div>
|
JS1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| new Vue({ el: '#app', data () { return { checkboxes: [ { id: 1, title: 'a' }, { id: 2, title: 'b' }, { id: 3, title: 'c' } ] } }, created () { this.checkboxes[0].selected = true } })
|
试下效果:
See the Pen vue-v-model-not-work by iMaeGoo (@iMaeGoo) on CodePen.
复选框a的表现显然是异常的,点击不能成功地切换选中状态,而在点击之后再点击其他复选框,才会“有延迟地”切换状态。