Switch 控件
问题
比如,在模型中有字段的配置如下,你会发现,如果使用提mysql数据库,这个控件是无法使用的。
json
{
"name": "online",
"label": "是否在线",
"type": "boolean",
"default": false,
"index": true
}WHY
- 在使用
sqlite3作为数据库时,Switch控件的值需要设置成true/false。
sqlite 作为数据库时,
golang中的sqlite3驱动会自动作数据转换。数据库表的字段数据类型是boolean,在数据库表里保存的数据是0或1。更新数据时在sql语句中却需要使用true,与false来更新数据。而数据从数据库中读取出来后会自动转换成true与false.
- 在使用 mysql 作为数据库时,
Switch控件的值需要设置成1/0。
在使用
mysql作为数据库源时,model中字段为boolean类型的字段生成的mysql数据库字段类型是tinyint(1)。数据的保存与读取不会自动的转换,0/1。
Switch控件默认的值是false或true。
如果在tab.json中定义字段中使用默认的字段绑定显示设置,即是在fields.table中不显式的定义控件属性,这时框架会自动生成字段定义,这个生成的定义只适用于 sqlite3 数据库。如果切换成 mysql 的数据后,显示就会异常。差不多也算是一个 bug。
解决方法
解决方法是,如果是使用的mysql数据库,在fields.table中替换显式的定义控件属性,checkedValue=1,unCheckedValue=0
使用 MYSQL 数据库时的配置:
json
{
"是否在线": {
"bind": "online",
"view": {
"type": "Switch",
"props": {
"checkedChildren": "是",
"checkedValue": 1,
"unCheckedChildren": "否",
"unCheckedValue": 0
}
}
}
}使用SQLITE数据库时的配置:
json
{
"是否在线": {
"bind": "online",
"view": {
"type": "Switch",
"props": {
"checkedChildren": "是",
"checkedValue": true,
"unCheckedChildren": "否",
"unCheckedValue": false
}
}
}
}