Picker 列表选择器

列表选取,在功能上和 Select 类似,但它能显示更复杂的信息。

基本用法

默认和 Select 很像,但请看后面的 pickerSchema 设置。

```schema: scope=”body” { “type”: “form”, “api”: “/api/mock2/form/saveForm”, “body”: [ { “type”: “picker”, “name”: “picker”, “label”: “picker”, “options”: [ { “label”:”A”, “value”:”a” }, { “label”:”B”, “value”:”b” }, { “label”:”C”, “value”:”c” } ] } ] }

  1. ## 配置 pickerSchema
  2. 可以配置 pickerSchema,实现弹框 crud 选择模式,更多 crud 配置可查看 crud 文档,选择之后最终的值通过 `valueField` 来设置。
  3. ```schema: scope="body"
  4. {
  5. "type": "form",
  6. "api": "/api/mock2/form/saveForm",
  7. "debug": true,
  8. "body": [
  9. {
  10. "type": "picker",
  11. "name": "type4",
  12. "joinValues": true,
  13. "valueField": "id",
  14. "labelField": "engine",
  15. "label": "多选",
  16. "source": "/api/mock2/sample",
  17. "size": "lg",
  18. "value": "4,5",
  19. "multiple": true,
  20. "pickerSchema": {
  21. "mode": "table",
  22. "name": "thelist",
  23. "quickSaveApi": "/api/mock2/sample/bulkUpdate",
  24. "quickSaveItemApi": "/api/mock2/sample/$id",
  25. "draggable": true,
  26. "headerToolbar": {
  27. "wrapWithPanel": false,
  28. "type": "form",
  29. "className": "text-right",
  30. "target": "thelist",
  31. "mode": "inline",
  32. "body": [
  33. {
  34. "type": "input-text",
  35. "name": "keywords",
  36. "addOn": {
  37. "type": "submit",
  38. "label": "搜索",
  39. "level": "primary",
  40. "icon": "fa fa-search pull-left"
  41. }
  42. }
  43. ]
  44. },
  45. "columns": [
  46. {
  47. "name": "engine",
  48. "label": "Rendering engine",
  49. "sortable": true,
  50. "searchable": true,
  51. "type": "text",
  52. "toggled": true
  53. },
  54. {
  55. "name": "browser",
  56. "label": "Browser",
  57. "sortable": true,
  58. "type": "text",
  59. "toggled": true
  60. },
  61. {
  62. "name": "platform",
  63. "label": "Platform(s)",
  64. "sortable": true,
  65. "type": "text",
  66. "toggled": true
  67. },
  68. {
  69. "name": "version",
  70. "label": "Engine version",
  71. "quickEdit": true,
  72. "type": "text",
  73. "toggled": true
  74. },
  75. {
  76. "name": "grade",
  77. "label": "CSS grade",
  78. "quickEdit": {
  79. "mode": "inline",
  80. "type": "select",
  81. "options": ["A", "B", "C", "D", "X"],
  82. "saveImmediately": true
  83. },
  84. "type": "text",
  85. "toggled": true
  86. },
  87. {
  88. "type": "operation",
  89. "label": "操作",
  90. "width": 100,
  91. "buttons": [
  92. {
  93. "type": "button",
  94. "icon": "fa fa-eye",
  95. "actionType": "dialog",
  96. "dialog": {
  97. "title": "查看",
  98. "body": {
  99. "type": "form",
  100. "body": [
  101. {
  102. "type": "static",
  103. "name": "engine",
  104. "label": "Engine"
  105. },
  106. {
  107. "type": "divider"
  108. },
  109. {
  110. "type": "static",
  111. "name": "browser",
  112. "label": "Browser"
  113. },
  114. {
  115. "type": "divider"
  116. },
  117. {
  118. "type": "static",
  119. "name": "platform",
  120. "label": "Platform(s)"
  121. },
  122. {
  123. "type": "divider"
  124. },
  125. {
  126. "type": "static",
  127. "name": "version",
  128. "label": "Engine version"
  129. },
  130. {
  131. "type": "divider"
  132. },
  133. {
  134. "type": "static",
  135. "name": "grade",
  136. "label": "CSS grade"
  137. },
  138. {
  139. "type": "divider"
  140. },
  141. {
  142. "type": "html",
  143. "html": "<p>添加其他 <span>Html 片段</span> 需要支持变量替换(todo).</p>"
  144. }
  145. ]
  146. }
  147. }
  148. },
  149. {
  150. "type": "button",
  151. "icon": "fa fa-pencil",
  152. "actionType": "dialog",
  153. "dialog": {
  154. "position": "left",
  155. "size": "lg",
  156. "title": "编辑",
  157. "body": {
  158. "type": "form",
  159. "name": "sample-edit-form",
  160. "api": "/api/mock2/sample/$id",
  161. "body": [
  162. {
  163. "type": "input-text",
  164. "name": "engine",
  165. "label": "Engine",
  166. "required": true
  167. },
  168. {
  169. "type": "divider"
  170. },
  171. {
  172. "type": "input-text",
  173. "name": "browser",
  174. "label": "Browser",
  175. "required": true
  176. },
  177. {
  178. "type": "divider"
  179. },
  180. {
  181. "type": "input-text",
  182. "name": "platform",
  183. "label": "Platform(s)",
  184. "required": true
  185. },
  186. {
  187. "type": "divider"
  188. },
  189. {
  190. "type": "input-text",
  191. "name": "version",
  192. "label": "Engine version"
  193. },
  194. {
  195. "type": "divider"
  196. },
  197. {
  198. "type": "select",
  199. "name": "grade",
  200. "label": "CSS grade",
  201. "options": ["A", "B", "C", "D", "X"]
  202. }
  203. ]
  204. }
  205. }
  206. },
  207. {
  208. "type": "button",
  209. "icon": "fa fa-times text-danger",
  210. "actionType": "ajax",
  211. "confirmText": "您确认要删除?",
  212. "api": "delete:/api/mock2/sample/$id"
  213. }
  214. ],
  215. "toggled": true
  216. }
  217. ]
  218. }
  219. }
  220. ]
  221. }

内嵌模式

可以配置"embed": true,实现内嵌 picker

schema: scope="body" { "type": "form", "api": "/api/mock2/form/saveForm", "body": [ { "type": "picker", "name": "type4", "joinValues": true, "valueField": "id", "labelField": "engine", "label": "Picker", "embed": true, "source": "/api/mock2/crud/tree?waitSeconds=1", "size": "lg", "value": "4,5", "multiple": true, "pickerSchema": { "mode": "table", "name": "thelist", "quickSaveApi": "/api/mock2/sample/bulkUpdate", "quickSaveItemApi": "/api/mock2/sample/$id", "draggable": true, "headerToolbar": { "wrapWithPanel": false, "type": "form", "className": "text-right", "target": "thelist", "mode": "inline", "body": [ { "type": "input-text", "name": "keywords", "addOn": { "type": "submit", "label": "搜索", "level": "primary", "icon": "fa fa-search pull-left" } } ] }, "columns": [ { "name": "engine", "label": "Rendering engine", "sortable": true, "searchable": true, "type": "text", "toggled": true }, { "name": "browser", "label": "Browser", "sortable": true, "type": "text", "toggled": true }, { "name": "platform", "label": "Platform(s)", "sortable": true, "type": "text", "toggled": true }, { "name": "version", "label": "Engine version", "quickEdit": true, "type": "text", "toggled": true }, { "name": "grade", "label": "CSS grade", "quickEdit": { "mode": "inline", "type": "select", "options": ["A", "B", "C", "D", "X"], "saveImmediately": true }, "type": "text", "toggled": true }, { "type": "operation", "label": "操作", "width": 100, "buttons": [ { "type": "button", "icon": "fa fa-eye", "actionType": "dialog", "dialog": { "title": "查看", "body": { "type": "form", "body": [ { "type": "static", "name": "engine", "label": "Engine" }, { "type": "divider" }, { "type": "static", "name": "browser", "label": "Browser" }, { "type": "divider" }, { "type": "static", "name": "platform", "label": "Platform(s)" }, { "type": "divider" }, { "type": "static", "name": "version", "label": "Engine version" }, { "type": "divider" }, { "type": "static", "name": "grade", "label": "CSS grade" }, { "type": "divider" }, { "type": "html", "html": "<p>添加其他 <span>Html 片段</span> 需要支持变量替换(todo).</p>" } ] } } }, { "type": "button", "icon": "fa fa-pencil", "actionType": "dialog", "dialog": { "position": "left", "size": "lg", "title": "编辑", "body": { "type": "form", "name": "sample-edit-form", "api": "/api/mock2/sample/$id", "body": [ { "type": "input-text", "name": "engine", "label": "Engine", "required": true }, { "type": "divider" }, { "type": "input-text", "name": "browser", "label": "Browser", "required": true }, { "type": "divider" }, { "type": "input-text", "name": "platform", "label": "Platform(s)", "required": true }, { "type": "divider" }, { "type": "input-text", "name": "version", "label": "Engine version" }, { "type": "divider" }, { "type": "select", "name": "grade", "label": "CSS grade", "options": ["A", "B", "C", "D", "X"] } ] } } }, { "type": "button", "icon": "fa fa-times text-danger", "actionType": "ajax", "confirmText": "您确认要删除?", "api": "delete:/api/mock2/sample/$id" } ], "toggled": true } ] } } ] }

属性表

当做选择器表单项使用时,除了支持 普通表单项属性表 中的配置以外,还支持下面一些配置

属性名 类型 默认值 说明
options Array<object>Array<string> 选项组
source stringAPI数据映射 动态选项组
multiple boolean 是否为多选。
delimiter boolean false 拼接符
labelField boolean "label" 选项标签字段
valueField boolean "value" 选项值字段
joinValues boolean true 拼接值
extractValue boolean false 提取值
autoFill object 自动填充
modalMode string "dialog" 设置 dialog 或者 drawer,用来配置弹出方式。
pickerSchema string {mode: 'list', listItem: {title: '${label}'}} 即用 List 类型的渲染,来展示列表信息。更多配置参考 CRUD
embed boolean false 是否使用内嵌模式

事件表

当前组件会对外派发以下事件,可以通过onEvent来监听这些事件,并通过actions来配置执行的动作,在actions中可以通过event.data.xxx事件参数变量来获取事件产生的数据,详细请查看事件动作

事件名称 事件参数 说明
change event.data.value: string
event.data.option: Option 选中值
选中值变化时触发