UILinkedPicker

来自于:官方立即使用

open set close hide show

概述

UILinkedPicker 是自定义分级联动选择器模块,支持自定义选择器的大小、位置、内容及其级别(android暂仅最大支持3级)和数据源,可手动设置指定选中项,用于实现固定取值范围的内容选择器,多项内容之间有级联关系;本模块和 UISelector 模块相似,与之相比数据源格式不同,本模块几点信息数据支持自定义

UILinkedPicker - 图1

open

打开选择器

open({params}, callback(ret, err))

params

rect:

  • 类型:JSON 对象
  • 描述:(可选项)模块的位置及尺寸
  • 内部字段:
  1. {
  2. x: 0, //(可选项)数字类型;模块左上角的 x 坐标(相对于所属的 Window 或 Frame);默认:0
  3. y: 0, //(可选项)数字类型;模块左上角的 y 坐标(相对于所属的 Window 或 Frame);默认:0
  4. w: 320, //(可选项)数字类型;模块的宽度;默认:所属的 Window 或 Frame 的宽度
  5. h: 480 //(可选项)数字类型;模块的高度;默认:w
  6. }

styles:

  • 类型:JSON 对象
  • 描述:(可选项)模块各部分的样式
  • 内部字段:
  1. {
  2. bg: 'rgba(0,0,0,0)', //(可选项)字符串类型;模块背景,支持 rgb、rgba、#,图片路径(本地路径,fs://、widget://);默认:'rgba(0,0,0,0)'
  3. text:{ //(可选项)JSON对象;字体样式;默认值见内部字段
  4. size: 22, //(可选项)数字类型;字体大小;默认值:22
  5. selected: '#fff', //(可选项)字符串类型;选中字体色,支持 rgb、rgba、#;默认#fff
  6. normal: '#000' //(可选项)字符串类型;常态字体色;支持 rgb、rgba、#;默认#000
  7. },
  8. item:{ //(可选项)JSON对象;item 样式;默认值见内部字段
  9. w: 80, //(可选项)数字类型;背景视图的宽;默认值:单元格宽-20
  10. h: 45, //(可选项)数字类型;背景视图的高;默认值:单元格高-20
  11. normal: '#87ceeb', //(可选项)字符串类型;常态背景色,支持 rgb、rgba、#;默认值:#87ceeb
  12. selected: '#218868', //(可选项)字符串类型;选中后的背景色,支持 rgb、rgba、#;默认值:#218868
  13. zoomIn: 1.2 //(可选项)数字类型;选中后放大倍数,;默认值:1.2
  14. }
  15. }

data:

  • 类型:数组对象/字符串
  • 描述:选择器的数据源,若为字符串,则表示 json 文件的路径(支持 widget://、fs:// 协议),文件格式同下文内部字段
  • 内部字段:
  1. [{
  2. value: //JSON对象;结点信息,本数据字段内容可自定义,自定义的结点信息数据会在选中后返回给前端
  3. children: //数组类型;结点子级目录的信息组成的数组,类型为 JSON 对象。若该对象内包含 children 字段数据,则表示该结点有子级目录;
  4. }]
  5. //举例如下:
  6. //一级选择器:[{
  7. 'value':{
  8. 'id':1,
  9. 'name':'A'
  10. }
  11. },{
  12. 'value':{
  13. 'id':2,
  14. 'name':'B'
  15. }
  16. },{
  17. 'value':{
  18. 'id':3,
  19. 'name':'C'
  20. }
  21. },{
  22. 'value':{
  23. 'id':4,
  24. 'name':'D'
  25. }
  26. }]
  27. //二级选择器: [{
  28. 'value':{
  29. 'id':10,
  30. 'name':'A'
  31. },
  32. 'children':[{
  33. 'value':{
  34. 'id':11,
  35. 'name':'10'
  36. }
  37. },{
  38. 'value':{
  39. 'id':12,
  40. 'name':'11'
  41. }
  42. },{
  43. 'value':{
  44. 'id':13,
  45. 'name':'12'
  46. }
  47. },{
  48. 'value':{
  49. 'id':14,
  50. 'name':'13'
  51. }
  52. }]
  53. },{
  54. 'value':{
  55. 'id':20,
  56. 'name':'B'
  57. },
  58. 'children':[{
  59. 'value':{
  60. 'id':21,
  61. 'name':'20'
  62. }
  63. },{
  64. 'value':{
  65. 'id':22,
  66. 'name':'21'
  67. }
  68. },{
  69. 'value':{
  70. 'id':23,
  71. 'name':'22'
  72. }
  73. },{
  74. 'value':{
  75. 'id':24,
  76. 'name':'23'
  77. }
  78. }]
  79. },{
  80. 'value':{
  81. 'id':30,
  82. 'name':'C'
  83. },
  84. 'children':[{
  85. 'value':{
  86. 'id':31,
  87. 'name':'30'
  88. }
  89. },{
  90. 'value':{
  91. 'id':32,
  92. 'name':'31'
  93. }
  94. },{
  95. 'value':{
  96. 'id':33,
  97. 'name':'32'
  98. }
  99. },{
  100. 'value':{
  101. 'id':34,
  102. 'name':'33'
  103. }
  104. }]
  105. },{
  106. 'value':{
  107. 'id':40,
  108. 'name':'D'
  109. },
  110. 'children':[{
  111. 'value':{
  112. 'id':41,
  113. 'name':'40'
  114. }
  115. },{
  116. 'value':{
  117. 'id':42,
  118. 'name':'41'
  119. }
  120. },{
  121. 'value':{
  122. 'id':43,
  123. 'name':'42'
  124. }
  125. },{
  126. 'value':{
  127. 'id':44,
  128. 'name':'43'
  129. }
  130. }]
  131. }]
  132. //三级选择器: [{
  133. 'value':{
  134. 'id':10,
  135. 'name':'A'
  136. },
  137. 'children':[{
  138. 'value':{
  139. 'id':11,
  140. 'name':'10'
  141. },
  142. 'children':[{
  143. 'value':{
  144. 'id':111,
  145. 'name':'301'
  146. }
  147. },{
  148. 'value':{
  149. 'id':112,
  150. 'name':'302'
  151. }
  152. }]
  153. },{
  154. 'value':{
  155. 'id':12,
  156. 'name':'11'
  157. },
  158. 'children':[{
  159. 'value':{
  160. 'id':211,
  161. 'name':'303'
  162. }
  163. },{
  164. 'value':{
  165. 'id':212,
  166. 'name':'304'
  167. }
  168. }]
  169. },{
  170. 'value':{
  171. 'id':13,
  172. 'name':'12'
  173. },
  174. 'children':[{
  175. 'value':{
  176. 'id':311,
  177. 'name':'331'
  178. }
  179. },{
  180. 'value':{
  181. 'id':312,
  182. 'name':'332'
  183. }
  184. }]
  185. },{
  186. 'value':{
  187. 'id':14,
  188. 'name':'13'
  189. },
  190. 'children':[{
  191. 'value':{
  192. 'id':411,
  193. 'name':'341'
  194. }
  195. },{
  196. 'value':{
  197. 'id':412,
  198. 'name':'342'
  199. }
  200. }]
  201. }]
  202. },{
  203. 'value':{
  204. 'id':20,
  205. 'name':'B'
  206. },
  207. 'children':[{
  208. 'value':{
  209. 'id':21,
  210. 'name':'20'
  211. },
  212. 'children':[{
  213. 'value':{
  214. 'id':213,
  215. 'name':'213'
  216. }
  217. },{
  218. 'value':{
  219. 'id':214,
  220. 'name':'214'
  221. }
  222. }]
  223. },{
  224. 'value':{
  225. 'id':22,
  226. 'name':'21'
  227. },
  228. 'children':[{
  229. 'value':{
  230. 'id':221,
  231. 'name':'221'
  232. }
  233. },{
  234. 'value':{
  235. 'id':222,
  236. 'name':'222'
  237. }
  238. }]
  239. },{
  240. 'value':{
  241. 'id':23,
  242. 'name':'22'
  243. },
  244. 'children':[{
  245. 'value':{
  246. 'id':231,
  247. 'name':'231'
  248. }
  249. },{
  250. 'value':{
  251. 'id':232,
  252. 'name':'232'
  253. }
  254. }]
  255. },{
  256. 'value':{
  257. 'id':24,
  258. 'name':'23'
  259. },
  260. 'children':[{
  261. 'value':{
  262. 'id':241,
  263. 'name':'241'
  264. }
  265. },{
  266. 'value':{
  267. 'id':242,
  268. 'name':'242'
  269. }
  270. }]
  271. }]
  272. },{
  273. 'value':{
  274. 'id':30,
  275. 'name':'C'
  276. },
  277. 'children':[{
  278. 'value':{
  279. 'id':31,
  280. 'name':'30'
  281. },
  282. 'children':[{
  283. 'value':{
  284. 'id':311,
  285. 'name':'311'
  286. }
  287. },{
  288. 'value':{
  289. 'id':312,
  290. 'name':'312'
  291. }
  292. }]
  293. },{
  294. 'value':{
  295. 'id':32,
  296. 'name':'31'
  297. },
  298. 'children':[{
  299. 'value':{
  300. 'id':321,
  301. 'name':'321'
  302. }
  303. },{
  304. 'value':{
  305. 'id':322,
  306. 'name':'322'
  307. }
  308. }]
  309. },{
  310. 'value':{
  311. 'id':33,
  312. 'name':'32'
  313. },
  314. 'children':[{
  315. 'value':{
  316. 'id':331,
  317. 'name':'331'
  318. }
  319. },{
  320. 'value':{
  321. 'id':331,
  322. 'name':'332'
  323. }
  324. }]
  325. },{
  326. 'value':{
  327. 'id':34,
  328. 'name':'33'
  329. },
  330. 'children':[{
  331. 'value':{
  332. 'id':341,
  333. 'name':'341'
  334. }
  335. },{
  336. 'value':{
  337. 'id':342,
  338. 'name':'342'
  339. }
  340. }]
  341. }]
  342. },{
  343. 'value':{
  344. 'id':40,
  345. 'name':'D'
  346. },
  347. 'children':[{
  348. 'value':{
  349. 'id':41,
  350. 'name':'40'
  351. },
  352. 'children':[{
  353. 'value':{
  354. 'id':411,
  355. 'name':'411'
  356. }
  357. },{
  358. 'value':{
  359. 'id':412,
  360. 'name':'412'
  361. }
  362. }]
  363. },{
  364. 'value':{
  365. 'id':42,
  366. 'name':'41'
  367. },
  368. 'children':[{
  369. 'value':{
  370. 'id':421,
  371. 'name':'421'
  372. }
  373. },{
  374. 'value':{
  375. 'id':422,
  376. 'name':'422'
  377. }
  378. }]
  379. },{
  380. 'value':{
  381. 'id':43,
  382. 'name':'42'
  383. },
  384. 'children':[{
  385. 'value':{
  386. 'id':431,
  387. 'name':'431'
  388. }
  389. },{
  390. 'value':{
  391. 'id':432,
  392. 'name':'432'
  393. }
  394. }]
  395. },{
  396. 'value':{
  397. 'id':44,
  398. 'name':'43'
  399. },
  400. 'children':[{
  401. 'value':{
  402. 'id':441,
  403. 'name':'441'
  404. }
  405. },{
  406. 'value':{
  407. 'id':442,
  408. 'name':'442'
  409. }
  410. }]
  411. }]
  412. }]

rows:

  • 类型:数字
  • 描述:(可选项)滚动内容时可见的内容行数,只接受大于1的奇整数。
  • 默认值:5

indexs:

  • 类型:数组
  • 描述:(可选项)各列默认选中项 item 的下标(不可超过本列 item 总数)组成的数组
  • 默认值:[0,0…] //数组个数和级数对应

bounce:

  • 类型:布尔
  • 描述:(可选项)列表滑动到头是否弹动
  • 默认值:true

fixedOn:

  • 类型:字符串类型
  • 描述:(可选项)模块视图添加到指定 frame 的名字(只指 frame,传 window 无效)
  • 默认:模块依附于当前 window

fixed:

  • 类型:布尔
  • 描述:(可选项)模块是否随所属 window 或 frame 滚动
  • 默认值:true(不随之滚动)

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. eventType:'show', //字符串类型;交互事件的类型;
  3. //取值范围:
  4. //show(模块打开成功)
  5. //selected(选择器选中内容)
  6. selects:[{ //数组类型;从各级目录选取的内容信息组成的数组,若选择器是自定义的二级选择器,则本数组包含两个元素,若选择器是自定义的三级选择器,则此数组包含三个元素
  7. index: 1, //数字类型;选取的数据在所在数组内的索引
  8. value: {'id':1,'name':'北京'}//JSON对象;可自定义的结点的信息
  9. }]
  10. }

示例代码

  1. var UILinkedPicker = api.require('UILinkedPicker');
  2. UILinkedPicker.open({
  3. rect: {
  4. x: 30,
  5. y: api.frameHeight / 2 - 170,
  6. w: api.frameWidth - 60,
  7. h: 340
  8. },
  9. styles: {
  10. bg: 'rgba(0,0,0,0)',
  11. text: {
  12. size: 14,
  13. selected: '#fff',
  14. normal: '#000'
  15. },
  16. item: {
  17. w: 80,
  18. h: 45,
  19. normal: '#87ceeb',
  20. selected: '#218868',
  21. zoomIn: 1.2
  22. }
  23. },
  24. rows: 5,
  25. indexs: [1, 2, 3],
  26. bounce: false,
  27. fixedOn: api.frameName,
  28. fixed: false,
  29. data: [{
  30. 'value': {
  31. 'id': 1,
  32. 'name': 'A'
  33. }
  34. }, {
  35. 'value': {
  36. 'id': 2,
  37. 'name': 'B'
  38. }
  39. }, {
  40. 'value': {
  41. 'id': 3,
  42. 'name': 'C'
  43. }
  44. }, {
  45. 'value': {
  46. 'id': 4,
  47. 'name': 'D'
  48. }
  49. }, {
  50. 'value': {
  51. 'id': 5,
  52. 'name': 'E'
  53. }
  54. }, {
  55. 'value': {
  56. 'id': 6,
  57. 'name': 'F'
  58. }
  59. }, {
  60. 'value': {
  61. 'id': 7,
  62. 'name': 'G'
  63. }
  64. }, {
  65. 'value': {
  66. 'id': 8,
  67. 'name': 'H'
  68. }
  69. }, {
  70. 'value': {
  71. 'id': 9,
  72. 'name': 'I'
  73. }
  74. }, {
  75. 'value': {
  76. 'id': 10,
  77. 'name': 'J'
  78. }
  79. }]
  80. }, function(ret, err) {
  81. if (ret) {
  82. alert(JSON.stringify(ret));
  83. } else {
  84. alert(JSON.stringify(err));
  85. }
  86. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

set

设置选择器的选中项

set({params})

params

indexs:

  • 类型:数组
  • 描述:(可选项)各列默认选中项 item 的下标(不可超过本列 item 总数)组成的数组
  • 默认值:[0,0…]//数组个数和级数对应

示例代码

  1. var UILinkedPicker = api.require('UILinkedPicker');
  2. UILinkedPicker.set({
  3. indexs: [2, 3, 6]
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

close

关闭选择器

close()

示例代码

  1. var UILinkedPicker = api.require('UILinkedPicker');
  2. UILinkedPicker.close();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

hide

隐藏选择器

hide()

示例代码

  1. var UILinkedPicker = api.require('UILinkedPicker');
  2. UILinkedPicker.hide();

补充说明

隐藏选择器,并没有从内存里清除

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

show

显示已隐藏的选择器

show()

示例代码

  1. var UILinkedPicker = api.require('UILinkedPicker');
  2. UILinkedPicker.show();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本