js-components-container-stepper.md 6.6 KB
Newer Older
Z
zengyawen 已提交
1 2
# stepper

H
geshi  
HelloCrease 已提交
3 4
>  **说明:**
>  从API version 5开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
Z
zengyawen 已提交
5 6 7

步骤导航器。当完成一个任务需要多个步骤时,可以使用步骤导航器展示当前进展。

Z
zengyawen 已提交
8 9

## 权限列表
Z
zengyawen 已提交
10 11 12



Z
zengyawen 已提交
13 14 15 16 17

## 子组件

仅支持<stepper-item>子组件。

H
geshi  
HelloCrease 已提交
18 19
>  **说明:**
>  步骤导航器内的步骤顺序按照子组件<stepper-item>的顺序进行排序。
Z
zengyawen 已提交
20 21 22 23 24 25


## 属性

除支持[通用属性](../arkui-js/js-components-common-attributes.md)外,还支持如下属性:

H
geshi  
HelloCrease 已提交
26 27
| 名称    | 类型     | 默认值  | 描述                             |
| ----- | ------ | ---- | ------------------------------ |
S
sienna1128 已提交
28
| index | number | 0    | 设置步骤导航器步骤显示第几个stepper-item子组件,默认显示第一个stepper-item。 |
Z
zengyawen 已提交
29 30 31 32 33 34


## 样式

支持[通用样式](../arkui-js/js-components-common-styles.md)

H
geshi  
HelloCrease 已提交
35 36
>  **说明:**
>  stepper组件默认占满父容器大小,建议父组件使用应用窗口大小(或者父组件为根节点)来优化体验。
Z
zengyawen 已提交
37 38 39 40 41 42


## 事件

除支持[通用事件](../arkui-js/js-components-common-events.md)外,还支持如下事件:

H
geshi  
HelloCrease 已提交
43 44
| 名称     | 参数                                       | 描述                                       |
| ------ | ---------------------------------------- | ---------------------------------------- |
S
sienna1128 已提交
45 46 47
| finish | 无                                        | 当步骤导航器最后一个步骤完成时,触发该事件。                    |
| skip   | 无                                        | 当前步骤导航器下一步按钮状态为skip,即可跳过时,点击右侧跳过按钮触发该事件。 |
| change | { prevIndex:prevIndex, index: index} | 当用户点击步骤导航器的左边或者右边按钮进行步骤切换时触发该事件,prevIndex表示老步骤的序号,index表示新步骤的序号。 |
H
HelloCrease 已提交
48 49
| next   | { index:index, pendingIndex: pendingIndex } | 当用户点击下一步按钮时触发该事件,index表示当前步骤序号,pendingIndex表示将要跳转的序号,该事件有返回值,返回值格式为:{ pendingIndex:pendingIndex },可以通过指定pendingIndex来修改下一个步骤使用哪个stepper-item子组件。 |
| back   | { index:index, pendingIndex: pendingIndex } | 当用户点击上一步按钮时触发该事件,index表示当前步骤序号,pendingIndex表示将要跳转的序号,该事件有返回值,返回值格式为Object:{ pendingIndex:pendingIndex },可以通过指定pendingIndex来修改上一个步骤使用哪个stepper-item子组件。 |
Z
zengyawen 已提交
50 51 52 53 54 55


## 方法

除支持[通用方法](../arkui-js/js-components-common-methods.md)外,支持如下方法:

H
geshi  
HelloCrease 已提交
56 57
| 名称                  | 参数                                       | 描述                                       |
| ------------------- | ---------------------------------------- | ---------------------------------------- |
S
sienna1128 已提交
58
| setNextButtonStatus | {&nbsp;status:&nbsp;string,&nbsp;label:&nbsp;label&nbsp;} | 设置当前步骤中下一步按钮的文本与状态,参数中label为指定按钮文本,status指定按钮状态,status可选值为:<br/>-&nbsp;normal:正常状态,下一步文本按钮正常显示,可点击进入下一个步骤;<br/>-&nbsp;disabled:不可用状态,下一步文本按钮灰度显示,不可点击进入下一个步骤;<br/>-&nbsp;waiting:等待状态,下一步文本按钮不显示,使用等待进度条,不可点击进入下一个步骤。<br/>-&nbsp;skip:跳过状态,下一步文本按钮显示跳过按钮,点击时会跳过剩下步骤。 |
Z
zengyawen 已提交
59 60 61


## 示例
Z
zengyawen 已提交
62

H
geshi  
HelloCrease 已提交
63
```html
Z
zengyawen 已提交
64
<!-- xxx.hml -->
Y
yamila 已提交
65
<div class="container">
S
sienna1128 已提交
66
    <stepper class="stepper" id="mystepper" onnext="nextclick" onback="backclick" onchange="statuschange"
S
sienna1128 已提交
67 68 69 70 71
             onfinish="finish" onskip="skip" style="height : 100%;">
        <stepper-item class="stepper-item" label="{{ label_1 }}">
            <div class="item">
                <text>Page One</text>
                <button type="capsule" class="button" value="change status" onclick="setRightButton"></button>
Y
yamila 已提交
72 73
            </div>
        </stepper-item>
S
sienna1128 已提交
74 75 76 77
        <stepper-item class="stepper-item" label="{{ label_2 }}">
            <div class="item">
                <text>Page Two</text>
                <button type="capsule" class="button" value="change status" onclick="setRightButton"></button>
Y
yamila 已提交
78 79
            </div>
        </stepper-item>
S
sienna1128 已提交
80 81 82 83
        <stepper-item class="stepper-item" label="{{ label_3 }}">
            <div class="item">
                <text>Page Three</text>
                <button type="capsule" class="button" value="change status" onclick="setRightButton"></button>
Y
yamila 已提交
84 85 86
            </div>
        </stepper-item>
    </stepper>
Z
zengyawen 已提交
87 88 89
</div>
```

H
geshi  
HelloCrease 已提交
90
```css
Z
zengyawen 已提交
91 92
/* xxx.css */
.container {
Y
yamila 已提交
93 94
    flex-direction: column;
    align-items: center;
S
sienna1128 已提交
95 96 97
    height: 100%;
    width: 100%;
    background-color: #f7f7f7;
Z
zengyawen 已提交
98
}
S
sienna1128 已提交
99
.stepper{
Y
yamila 已提交
100
    width: 100%;
S
sienna1128 已提交
101 102 103 104 105
    height: 100%;
}
.stepper-item {
    width: 100%;
    height: 100%;
Y
yamila 已提交
106 107
    flex-direction: column;
    align-items: center;
Z
zengyawen 已提交
108
}
S
sienna1128 已提交
109 110 111 112 113 114 115 116 117 118 119 120 121 122
.item{
    width: 90%;
    height: 86%;
    margin-top: 80px;
    background-color: white;
    border-radius: 60px;
    flex-direction: column;
    align-items: center;
    padding-top: 160px;
}
text {
    font-size: 78px;
    color: #182431;
    opacity: 0.4;
Z
zengyawen 已提交
123 124
}
.button {
S
sienna1128 已提交
125 126
    width: 40%;
    margin-top: 100px;
Y
yamila 已提交
127
    justify-content: center;
Z
zengyawen 已提交
128 129 130
}
```

H
geshi  
HelloCrease 已提交
131
```js
Z
zengyawen 已提交
132
// xxx.js
S
sienna1128 已提交
133 134
import prompt from '@system.prompt';

Z
zengyawen 已提交
135
export default {
Y
yamila 已提交
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
    data: {
        label_1:
        {
            prevLabel: 'BACK',
            nextLabel: 'NEXT',
            status: 'normal'
        },
        label_2:
        {
            prevLabel: 'BACK',
            nextLabel: 'NEXT',
            status: 'normal'
        },
        label_3:
        {
            prevLabel: 'BACK',
            nextLabel: 'NEXT',
            status: 'normal'
        }
    },
    setRightButton(e) {
        this.$element('mystepper').setNextButtonStatus({
S
sienna1128 已提交
158
            status: 'waiting', label: 'SKIP'
Y
yamila 已提交
159 160 161 162 163 164 165 166 167 168 169 170 171
        });
    },
    nextclick(e) {
        var index = {
            pendingIndex: e.pendingIndex
        }
        return index;
    },
    backclick(e) {
        var index = {
            pendingIndex: e.pendingIndex
        }
        return index;
S
sienna1128 已提交
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186
    },
    statuschange(e) {
        prompt.showToast({
            message: '上一步序号' + e.prevIndex + '当前序号' + e.index
        })
    },
    finish() {
        prompt.showToast({
            message: '最后一步已完成'
        })
    },
    skip() {
        prompt.showToast({
            message: 'skip触发'
        })
Z
zengyawen 已提交
187 188 189 190
    }
}
```

S
sienna1128 已提交
191
![](figures/stepper.gif)