1e41f4b71Sopenharmony_ci# stepper 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci> **说明:** 4e41f4b71Sopenharmony_ci> 从API version 5开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ci步骤导航器。当完成一个任务需要多个步骤时,可以使用步骤导航器展示当前进展。 7e41f4b71Sopenharmony_ci 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ci## 权限列表 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci无 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ci 14e41f4b71Sopenharmony_ci## 子组件 15e41f4b71Sopenharmony_ci 16e41f4b71Sopenharmony_ci仅支持<stepper-item>子组件。 17e41f4b71Sopenharmony_ci 18e41f4b71Sopenharmony_ci> **说明:** 19e41f4b71Sopenharmony_ci> 步骤导航器内的步骤顺序按照子组件<stepper-item>的顺序进行排序。 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci 22e41f4b71Sopenharmony_ci## 属性 23e41f4b71Sopenharmony_ci 24e41f4b71Sopenharmony_ci除支持[通用属性](js-components-common-attributes.md)外,还支持如下属性: 25e41f4b71Sopenharmony_ci 26e41f4b71Sopenharmony_ci| 名称 | 类型 | 默认值 | 描述 | 27e41f4b71Sopenharmony_ci| ----- | ------ | ---- | ------------------------------ | 28e41f4b71Sopenharmony_ci| index | number | 0 | 设置步骤导航器步骤显示第几个stepper-item子组件,默认显示第一个stepper-item。 | 29e41f4b71Sopenharmony_ci 30e41f4b71Sopenharmony_ci 31e41f4b71Sopenharmony_ci## 样式 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_ci支持[通用样式](js-components-common-styles.md)。 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_ci> **说明:** 36e41f4b71Sopenharmony_ci> stepper组件默认占满父容器大小,建议父组件使用应用窗口大小(或者父组件为根节点)来优化体验。 37e41f4b71Sopenharmony_ci 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci## 事件 40e41f4b71Sopenharmony_ci 41e41f4b71Sopenharmony_ci除支持[通用事件](js-components-common-events.md)外,还支持如下事件: 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci| 名称 | 参数 | 描述 | 44e41f4b71Sopenharmony_ci| ------ | ---------------------------------------- | ---------------------------------------- | 45e41f4b71Sopenharmony_ci| finish | 无 | 当步骤导航器最后一个步骤完成时,触发该事件。 | 46e41f4b71Sopenharmony_ci| skip | 无 | 当前步骤导航器下一步按钮状态为skip,即可跳过时,点击右侧跳过按钮触发该事件。 | 47e41f4b71Sopenharmony_ci| change | { prevIndex:prevIndex, index: index} | 当用户点击步骤导航器的左边或者右边按钮进行步骤切换时触发该事件,prevIndex表示老步骤的序号,index表示新步骤的序号。 | 48e41f4b71Sopenharmony_ci| next | { index:index, pendingIndex: pendingIndex } | 当用户点击下一步按钮时触发该事件,index表示当前步骤序号,pendingIndex表示将要跳转的序号,该事件有返回值,返回值格式为:{ pendingIndex:pendingIndex },可以通过指定pendingIndex来修改下一个步骤使用哪个stepper-item子组件。 | 49e41f4b71Sopenharmony_ci| back | { index:index, pendingIndex: pendingIndex } | 当用户点击上一步按钮时触发该事件,index表示当前步骤序号,pendingIndex表示将要跳转的序号,该事件有返回值,返回值格式为Object:{ pendingIndex:pendingIndex },可以通过指定pendingIndex来修改上一个步骤使用哪个stepper-item子组件。 | 50e41f4b71Sopenharmony_ci 51e41f4b71Sopenharmony_ci 52e41f4b71Sopenharmony_ci## 方法 53e41f4b71Sopenharmony_ci 54e41f4b71Sopenharmony_ci除支持[通用方法](js-components-common-methods.md)外,支持如下方法: 55e41f4b71Sopenharmony_ci 56e41f4b71Sopenharmony_ci| 名称 | 参数 | 描述 | 57e41f4b71Sopenharmony_ci| ------------------- | ---------------------------------------- | ---------------------------------------- | 58e41f4b71Sopenharmony_ci| setNextButtonStatus | { status: string, label: label } | 设置当前步骤中下一步按钮的文本与状态,参数中label为指定按钮文本,status指定按钮状态,status可选值为:<br/>- normal:正常状态,下一步文本按钮正常显示,可点击进入下一个步骤;<br/>- disabled:不可用状态,下一步文本按钮灰度显示,不可点击进入下一个步骤;<br/>- waiting:等待状态,下一步文本按钮不显示,使用等待进度条,不可点击进入下一个步骤。<br/>- skip:跳过状态,下一步文本按钮显示跳过按钮,点击时会跳过剩下步骤。 | 59e41f4b71Sopenharmony_ci 60e41f4b71Sopenharmony_ci 61e41f4b71Sopenharmony_ci## 示例 62e41f4b71Sopenharmony_ci 63e41f4b71Sopenharmony_ci```html 64e41f4b71Sopenharmony_ci<!-- xxx.hml --> 65e41f4b71Sopenharmony_ci<div class="container"> 66e41f4b71Sopenharmony_ci <stepper class="stepper" id="mystepper" onnext="nextclick" onback="backclick" onchange="statuschange" 67e41f4b71Sopenharmony_ci onfinish="finish" onskip="skip" style="height : 100%;"> 68e41f4b71Sopenharmony_ci <stepper-item class="stepper-item" label="{{ label_1 }}"> 69e41f4b71Sopenharmony_ci <div class="item"> 70e41f4b71Sopenharmony_ci <text>Page One</text> 71e41f4b71Sopenharmony_ci <button type="capsule" class="button" value="change status" onclick="setRightButton"></button> 72e41f4b71Sopenharmony_ci </div> 73e41f4b71Sopenharmony_ci </stepper-item> 74e41f4b71Sopenharmony_ci <stepper-item class="stepper-item" label="{{ label_2 }}"> 75e41f4b71Sopenharmony_ci <div class="item"> 76e41f4b71Sopenharmony_ci <text>Page Two</text> 77e41f4b71Sopenharmony_ci <button type="capsule" class="button" value="change status" onclick="setRightButton"></button> 78e41f4b71Sopenharmony_ci </div> 79e41f4b71Sopenharmony_ci </stepper-item> 80e41f4b71Sopenharmony_ci <stepper-item class="stepper-item" label="{{ label_3 }}"> 81e41f4b71Sopenharmony_ci <div class="item"> 82e41f4b71Sopenharmony_ci <text>Page Three</text> 83e41f4b71Sopenharmony_ci <button type="capsule" class="button" value="change status" onclick="setRightButton"></button> 84e41f4b71Sopenharmony_ci </div> 85e41f4b71Sopenharmony_ci </stepper-item> 86e41f4b71Sopenharmony_ci </stepper> 87e41f4b71Sopenharmony_ci</div> 88e41f4b71Sopenharmony_ci``` 89e41f4b71Sopenharmony_ci 90e41f4b71Sopenharmony_ci```css 91e41f4b71Sopenharmony_ci/* xxx.css */ 92e41f4b71Sopenharmony_ci.container { 93e41f4b71Sopenharmony_ci flex-direction: column; 94e41f4b71Sopenharmony_ci align-items: center; 95e41f4b71Sopenharmony_ci height: 100%; 96e41f4b71Sopenharmony_ci width: 100%; 97e41f4b71Sopenharmony_ci background-color: #f7f7f7; 98e41f4b71Sopenharmony_ci} 99e41f4b71Sopenharmony_ci.stepper{ 100e41f4b71Sopenharmony_ci width: 100%; 101e41f4b71Sopenharmony_ci height: 100%; 102e41f4b71Sopenharmony_ci} 103e41f4b71Sopenharmony_ci.stepper-item { 104e41f4b71Sopenharmony_ci width: 100%; 105e41f4b71Sopenharmony_ci height: 100%; 106e41f4b71Sopenharmony_ci flex-direction: column; 107e41f4b71Sopenharmony_ci align-items: center; 108e41f4b71Sopenharmony_ci} 109e41f4b71Sopenharmony_ci.item{ 110e41f4b71Sopenharmony_ci width: 90%; 111e41f4b71Sopenharmony_ci height: 86%; 112e41f4b71Sopenharmony_ci margin-top: 80px; 113e41f4b71Sopenharmony_ci background-color: white; 114e41f4b71Sopenharmony_ci border-radius: 60px; 115e41f4b71Sopenharmony_ci flex-direction: column; 116e41f4b71Sopenharmony_ci align-items: center; 117e41f4b71Sopenharmony_ci padding-top: 160px; 118e41f4b71Sopenharmony_ci} 119e41f4b71Sopenharmony_citext { 120e41f4b71Sopenharmony_ci font-size: 78px; 121e41f4b71Sopenharmony_ci color: #182431; 122e41f4b71Sopenharmony_ci opacity: 0.4; 123e41f4b71Sopenharmony_ci} 124e41f4b71Sopenharmony_ci.button { 125e41f4b71Sopenharmony_ci width: 40%; 126e41f4b71Sopenharmony_ci margin-top: 100px; 127e41f4b71Sopenharmony_ci justify-content: center; 128e41f4b71Sopenharmony_ci} 129e41f4b71Sopenharmony_ci``` 130e41f4b71Sopenharmony_ci 131e41f4b71Sopenharmony_ci```js 132e41f4b71Sopenharmony_ci// xxx.js 133e41f4b71Sopenharmony_ciimport prompt from '@ohos.promptAction'; 134e41f4b71Sopenharmony_ci 135e41f4b71Sopenharmony_ciexport default { 136e41f4b71Sopenharmony_ci data: { 137e41f4b71Sopenharmony_ci label_1: 138e41f4b71Sopenharmony_ci { 139e41f4b71Sopenharmony_ci prevLabel: 'BACK', 140e41f4b71Sopenharmony_ci nextLabel: 'NEXT', 141e41f4b71Sopenharmony_ci status: 'normal' 142e41f4b71Sopenharmony_ci }, 143e41f4b71Sopenharmony_ci label_2: 144e41f4b71Sopenharmony_ci { 145e41f4b71Sopenharmony_ci prevLabel: 'BACK', 146e41f4b71Sopenharmony_ci nextLabel: 'NEXT', 147e41f4b71Sopenharmony_ci status: 'normal' 148e41f4b71Sopenharmony_ci }, 149e41f4b71Sopenharmony_ci label_3: 150e41f4b71Sopenharmony_ci { 151e41f4b71Sopenharmony_ci prevLabel: 'BACK', 152e41f4b71Sopenharmony_ci nextLabel: 'NEXT', 153e41f4b71Sopenharmony_ci status: 'normal' 154e41f4b71Sopenharmony_ci } 155e41f4b71Sopenharmony_ci }, 156e41f4b71Sopenharmony_ci setRightButton(e) { 157e41f4b71Sopenharmony_ci this.$element('mystepper').setNextButtonStatus({ 158e41f4b71Sopenharmony_ci status: 'waiting', label: 'SKIP' 159e41f4b71Sopenharmony_ci }); 160e41f4b71Sopenharmony_ci }, 161e41f4b71Sopenharmony_ci nextclick(e) { 162e41f4b71Sopenharmony_ci var index = { 163e41f4b71Sopenharmony_ci pendingIndex: e.pendingIndex 164e41f4b71Sopenharmony_ci } 165e41f4b71Sopenharmony_ci return index; 166e41f4b71Sopenharmony_ci }, 167e41f4b71Sopenharmony_ci backclick(e) { 168e41f4b71Sopenharmony_ci var index = { 169e41f4b71Sopenharmony_ci pendingIndex: e.pendingIndex 170e41f4b71Sopenharmony_ci } 171e41f4b71Sopenharmony_ci return index; 172e41f4b71Sopenharmony_ci }, 173e41f4b71Sopenharmony_ci statuschange(e) { 174e41f4b71Sopenharmony_ci prompt.showToast({ 175e41f4b71Sopenharmony_ci message: '上一步序号' + e.prevIndex + '当前序号' + e.index 176e41f4b71Sopenharmony_ci }) 177e41f4b71Sopenharmony_ci }, 178e41f4b71Sopenharmony_ci finish() { 179e41f4b71Sopenharmony_ci prompt.showToast({ 180e41f4b71Sopenharmony_ci message: '最后一步已完成' 181e41f4b71Sopenharmony_ci }) 182e41f4b71Sopenharmony_ci }, 183e41f4b71Sopenharmony_ci skip() { 184e41f4b71Sopenharmony_ci prompt.showToast({ 185e41f4b71Sopenharmony_ci message: 'skip触发' 186e41f4b71Sopenharmony_ci }) 187e41f4b71Sopenharmony_ci } 188e41f4b71Sopenharmony_ci} 189e41f4b71Sopenharmony_ci``` 190e41f4b71Sopenharmony_ci 191e41f4b71Sopenharmony_ci 192