不定义 selectedOptions: []时 单选框可正常实现单选功能,定义后点击符合后,两个单选框同时被选中且无法通过再次点击改变状态
时间: 2024-11-27 07:16:47 浏览: 8
在 Vue 中使用 `v-model` 绑定复选框(`u-checkbox`)组时,`selectedOptions` 数组用于存储选中的项。如果你希望实现单选功能而不是多选功能,应该使用单个变量来存储选中的值,而不是数组。
以下是修改后的代码示例:
### 模板部分
将 `v-model` 绑定到单个变量 `selectedOption`,并移除 `@change` 事件处理函数:
```html
<u-checkbox-group v-model="selectedOption">
<u-checkbox
:value="item.value"
:label="item.title"
v-for="(item, index) in options"
:key="index"
></u-checkbox>
</u-checkbox-group>
```
### 脚本部分
将 `selectedOptions` 改为 `selectedOption`,并初始化为 `null` 或默认值:
```javascript
export default {
data() {
return {
options: [
{ value: 'not_compliant', title: '不符合' },
{ value: 'compliant', title: '符合' },
// 更多选项
],
upload: [],
data: null,
editableData: {},
dataLoaded: false,
selectedRecordId: null, // 用于存储从上一个页面传递的记录ID
selectedOption: null, // 初始化为 null 或默认值
};
},
methods: {
fetchData() {
// 构造请求参数
const params = {
page: 1,
rows: 30,
sort: "DANGER_R_ID",
order: "desc",
wheres: JSON.stringify([
{ name: "ORDER_STATUS", value: "1" },
{ name: "DANGER_R_ID", value: this.selectedRecordId }
])
};
// 发送带有token和参数的请求
request({
url: '/api/danger_rectify_record/getPageData',
method: 'POST',
header: {
'content-type': 'application/json',
'Authorization': `Bearer ${getToken()}`
},
data: params,
dataType: 'json'
}).then(response => {
// 请求成功,处理响应数据
this.data = response;
if (this.data.rows.length > 0) {
this.editableData = { ...this.data.rows[0] };
// 设置初始选中项
this.selectedOption = this.editableData.someKey || null; // 根据实际情况设置
}
this.dataLoaded = true;
}).catch(error => {
// 请求失败,处理错误
console.error(error);
uni.showToast({ title: '请求失败', icon: 'none' });
});
},
handleSubmit() {
// 这里可以添加提交修改的逻辑,如果需要的话
uni.showToast({ title: '当前页面为只读展示,无法提交修改', icon: 'none' });
},
updateData() {
// 可以在这里实现更新数据的逻辑
},
},
computed: {
formattedData() {
// 如果 data 存在,返回格式化的 JSON 字符串,否则返回空字符串
return this.data ? JSON.stringify(this.data, null, 2) : '';
}
},
mounted() {
// 获取上一个页面传递的参数
this.selectedRecordId = this.$route.query.recordId;
// 调用 fetchData 方法
this.fetchData();
}
};
```
### 解释
1. **模板部分**:将 `v-model` 绑定到 `selectedOption`,这样每次只能选择一个选项。
2. **脚本部分**:将 `selectedOptions` 改为 `selectedOption`,并初始化为 `null` 或默认值。在 `fetchData` 方法中,根据实际数据设置初始选中项。
这样修改后,单选框将正常工作,不会出现多个选项同时被选中的情况。
阅读全文