【发布时间】:2021-03-07 06:03:21
【问题描述】:
我有一长串复选框。我希望他们中的两组三个充当单选按钮。现在,撇开我的 UX 选择不谈,我怎样才能做到这一点?
复选框被实现为单个对象的属性,layer:
data() {
return {
layer: {},
}
},
watch: {
layer: {
handler(val, oldval) {
mapping.updateLayers(val)
},
deep: true,
},
},
效果很好。但是拦截val 并在handler() 内部更新this.layer 不会:
handler: function(val, oldval) {
if (val.FutureYear) { this.layer.NextYear = false; this.layer.ExistingYear = false; }
if (val.ExistingYear) { this.layer.NextYear = false; this.layer.FutureYear = false; }
if (val.NextYear) { this.layer.ExistingYear = false; this.layer.FutureYear = false; }
mapping.updateFoiLayers(val);
},
我怎样才能达到这个结果? (我宁愿不必实现实际的单选按钮,因为这会使管理所有层和 UI 变得更加复杂。)
【问题讨论】:
-
一个可能的问题是您没有将初始值设置为
layer。见vuejs.org/v2/guide/instance.html#Data-and-Methods。When a Vue instance is created, it adds all the properties found in its data object to Vue’s reactivity system.It should be noted that properties in data are only reactive if they existed when the instance was created. -
这部分工作正常 - 这就是
deep: true的用途。
标签: checkbox vue.js radio-button vuejs2