FormItem data.content `选项`数据排序有问题,不能按要求排序。radio
如题:
language
<FormItem
label="radio"
type="radio"
v-model="items.radio"
:input-attr="{ size: 'large', border: true, content: { a: '选项a', b: '选项b' } }"
/>
其中content的 键
如果是字符串
,排序就没有问题,但如果将上面键改为 { 2: '选项a', 1: '选项b' }
, 则 选项b
,会自动排到第一位。也就是键
如果是数字
,就会按升序排列了。就完全改变了原有排序方式。
因为之前没发现这个问题,导致我怀疑框架 ->order('weigh desc')
有问题。经过无数次测试,最后才发现问题出在connent 里面。同样 checkbox应该也有类似的问题,只是目前没有去测试。
另外请分别介绍一下:
index.vue
中的order
language
defaultOrder: { prop: 'weigh', order: 'desc' },
- 控制器中的
order
language
protected string|array $defaultSortField = 'weigh,desc';
- public function 中的
order
language
$res = $this->model
->withJoin($this->withJoinTable, $this->withJoinType)
->alias($alias)
->where($where)
->order($order)
->order('weigh desc')
->paginate($limit);
这三个地方都有 order
, 分别有什么作用。三者的关系是什么?
1个回答默认排序 投票数排序
siccd
这家伙很懒,什么也没写~
3周前
这都被你看出来了,我只管用使用工具,不管代码本身原理。
那就只有把数字改为字符串才能保证按要求排序了。
请先登录
键如果是数字自动排序:这是老哥对
js
不够了解了,虽然这不太合理,但是它就是这样的,任意对象数字键都会自动排序defaultOrder: { prop: 'weigh', order: 'desc' },
是给前端el-table
组件做初始化排序状态用的,因为发起api请求前就渲染表格了,CRUD生成时自动和protected string|array $defaultSortField = 'weigh,desc';
保持一致第三个
order
就是控制器最终查询数据使用的order
,它可能取值上面的$defaultSortField
,也可能是用户改变排序后的新order,还可能是有序保证
,即主键order