ionic Apps由称为组件的高级构建块组成。组件容许您快速构建应用程序的界面。Ionic配备了许多组件,包括模块,弹出窗口和卡片。查看下面的示例,了解每一个组件的外观,并了解如何使用每一个组件。熟悉了基础知识后,能够详细阅读API文档,了解如何自定义每一个组件。css
动做面板从设备屏幕的底部边缘向上滑动,并显示一组选项,能够确认或取消操做。动做面板有时能够用做菜单的替代,可是,它们不该该用于导航。ios
动做面板老是出如今页面上的任何其余组件之上,而且必须被解除后才能与底层内容交互。当它被触发时,页面的其他部分会变暗以给予操做表选项更多的焦点。
如下为iOS 和 Android的表现样式:git
Demo 源代码github
一个动做面板是一个对话框,让用户从一组选项中进行选择。它出如今应用程序内容的顶部,而且必须在用户恢复与应用程序交互以前手动解除。危险(destructive)选项在ios模式中很明显,例如Delete选项。有不少简单的方法能够取消操做表,例如点击背景或在桌面上点击退出键。api
一个动做面板是从一个数组中建立的buttons,每一个按钮都包含它的属性text,还能够有一个handler和role。若是处理程序返回,false则操做表不会被解除。一个动做面板选项也可任选地具备一个title,subTitle和一个icon。数组
按钮的role属性能够是destructive或cancel。没有角色属性的按钮将具备平台的默认外观。具备cancel角色的按钮将始终做为底部按钮加载,不管它们在数组中的哪一个位置。全部其余按钮将按照它们添加到buttons 数组的顺序显示。注意:咱们建议destructive 按钮始终是数组中的第一个按钮,使它们成为顶部按钮。另外,若是经过点击背景消除了动做面板,那么它将从具备取消角色的按钮中触发处理程序。sass
您能够在create方法的第一个参数中传递全部操做表的选项:ActionSheet.create(opts)。不然,操做表的实例会添加方法来添加选项,如setTitle()或addButton()。app
import { ActionSheetController } from 'ionic-angular' export class MyClass{ constructor(public actionSheetCtrl: ActionSheetController) {} presentActionSheet() { let actionSheet = this.actionSheetCtrl.create({ title: 'Modify your album', buttons: [ { text: 'Destructive', role: 'destructive', handler: () => { console.log('Destructive clicked'); } }, { text: 'Archive', handler: () => { console.log('Archive clicked'); } }, { text: 'Cancel', role: 'cancel', handler: () => { console.log('Cancel clicked'); } } ] }); actionSheet.present(); } }
打开一个带有标题,子标题和一组按钮的动做面板异步
Param | Type | Details |
---|---|---|
opts | ActionSheetOptions | 动做面板选项 |
ActionSheet 建立选项async
Option | Type | Description |
---|---|---|
title | string | 动做面板的标题。 |
subTitle | string | 动做面板的子标题。 |
cssClass | string | 自定义样式的其余类,以空格分隔。 |
enableBackdropDismiss | boolean | 若是用户点击背景幕时动做面板是否应关闭。 |
buttons | array<any> | 要显示的一组按钮。 |
ActionSheet按钮选项
Option | Type | Description |
---|---|---|
text | string | 按钮文本。 |
icon | icon | 按钮图标。 |
handler | any | 点击选项后的执行方法写在这里 |
cssClass | string | 自定义样式的附加类,由空格分隔。 |
role | string | 如何显示按钮,destructive或者cancel。若是未提供角色,则将显示没有任何其余样式的按钮。 |
在动做面板被解除后,应用程序可能还须要根据处理程序的逻辑转换到另外一个页面。可是,因为多个转换大体同时发生,所以导航控制器难以清晰地动画化可能异步启动的多个转换。这部分将进一步描述 Nav Transition Promises。对于动做面板而言,这意味着最好等待动做面板完成其转换,而后在同一个导航控制器上开始新的转换。
在下面的例子中,点击按钮后,它的处理程序等待异步操做完成,而后用它pop在同一个堆栈中导航回页面。潜在的问题是异步操做可能在动做面板完成转换以前完成。在这种状况下,最好确保动做面板首先完成转换,而后开始下一个转换。
let actionSheet = this.actionSheetCtrl.create({ title: 'Hello', buttons: [{ text: 'Ok', handler: () => { // user has clicked the action sheet button // begin the action sheet's dimiss transition let navTransition = actionSheet.dismiss(); // start some async method someAsyncOperation().then(() => { // once the async operation has completed // then run the next nav transition after the // first transition has finished animating out navTransition.then(() => { this.nav.pop(); }); }); return false; } }] }); actionSheet.present();
注意处理程序返回false很重要。按钮处理程序的一个功能是,当按钮被点击时,它们会自动关闭动做面板,可是,咱们须要对转换进行更多的控制。由于处理程序返回false,因此动做面板不会自动退出。相反,您如今能够彻底控制完成转换的时间,而且能够等待动做面板在完成转换以前完成转换。
All
Property | Default | Description |
---|---|---|
$action-sheet-width | 100% | 动做面板的宽度。 |
$action-sheet-max-width | 500px | 动做面板的最大宽度。 |