dialogs 模块提供了简单的对话框支持,可以通过对话框和用户进行交互。最简单的例子如下:
这段代码会弹出一个消息提示框显示"您好",并在用户点击"确定"后继续运行。稍微复杂一点的例子如下:
confirm()会弹出一个对话框并让用户选择"是"或"否",如果选择"是"则返回 true。
需要特别注意的是,对话框在 ui 模式下不能像通常那样使用,应该使用回调函数或者Promise的形式。理解这一点可能稍有困难。举个例子:
title {string} 对话框的标题。content {string} 可选,对话框的内容。默认为空。callback {Function} 回调函数,可选。当用户点击确定时被调用,一般用于 ui 模式。显示一个只包含“确定”按钮的提示对话框。直至用户点击确定脚本才继续运行。
该函数也可以作为全局函数使用。
在 ui 模式下该函数返回一个Promise。例如:
title {string} 对话框的标题。content {string} 可选,对话框的内容。默认为空。callback {Function} 回调函数,可选。当用户点击确定时被调用,一般用于 ui 模式。显示一个包含“确定”和“取消”按钮的提示对话框。如果用户点击“确定”则返回 true ,否则返回 false 。
该函数也可以作为全局函数使用。
在 ui 模式下该函数返回一个Promise。例如:
title {string} 对话框的标题。prefill {string} 输入框的初始内容,可选,默认为空。callback {Function} 回调函数,可选。当用户点击确定时被调用,一般用于 ui 模式。显示一个包含输入框的对话框,等待用户输入内容,并在用户点击确定时将输入的字符串返回。如果用户取消了输入,返回 null。
该函数也可以作为全局函数使用。
在 ui 模式下该函数返回一个Promise。例如:
当然也可以使用回调函数,例如:
等效于 eval(dialogs.rawInput(title, prefill, callback)), 该函数和 rawInput 的区别在于,会把输入的字符串用 eval 计算一遍再返回,返回的可能不是字符串。
可以用该函数输入数字、数组等。例如:
在 ui 模式下该函数返回一个Promise。例如:
相当于 dialogs.rawInput();
title {string} 对话框的标题。items {Array} 对话框的选项列表,是一个字符串数组。callback {Function} 回调函数,可选。当用户点击确定时被调用,一般用于 ui 模式。显示一个带有选项列表的对话框,等待用户选择,返回用户选择的选项索引(0 ~ item.length - 1)。如果用户取消了选择,返回-1。
在 ui 模式下该函数返回一个Promise。例如:
title {string} 对话框的标题。items {Array} 对话框的选项列表,是一个字符串数组。index {number} 对话框的初始选项的位置,默认为 0。callback {Function} 回调函数,可选。当用户点击确定时被调用,一般用于 ui 模式。显示一个单选列表对话框,等待用户选择,返回用户选择的选项索引(0 ~ item.length - 1)。如果用户取消了选择,返回-1。
在 ui 模式下该函数返回一个Promise。
title {string} 对话框的标题。items {Array} 对话框的选项列表,是一个字符串数组。indices {Array} 选项列表中初始选中的项目索引的数组,默认为空数组。callback {Function} 回调函数,可选。当用户点击确定时被调用,一般用于 ui 模式。显示一个多选列表对话框,等待用户选择,返回用户选择的选项索引的数组。如果用户取消了选择,返回[]。
在 ui 模式下该函数返回一个Promise。
properties {Object} 对话框属性,用于配置对话框。创建一个可自定义的对话框,例如:
选项 properties 可供配置的项目为:
title {string} 对话框标题titleColor {string} | {number} 对话框标题的颜色buttonRippleColor {string} | {number} 对话框按钮的波纹效果颜色icon {string} | {Image} 对话框的图标,是一个 URL 或者图片对象content {string} 对话框文字内容contentColor{string} | {number} 对话框文字内容的颜色contentLineSpacing{number} 对话框文字内容的行高倍数,1.0 为一倍行高items {Array} 对话框列表的选项itemsColor {string} | {number} 对话框列表的选项的文字颜色itemsSelectMode {string} 对话框列表的选项选择模式,可以为:
select 普通选择模式single 单选模式multi 多选模式itemsSelectedIndex {number} | {Array} 对话框列表中预先选中的项目索引,如果是单选模式为一个索引;多选模式则为数组positive {string} 对话框确定按钮的文字内容(最右边按钮)positiveColor {string} | {number} 对话框确定按钮的文字颜色(最右边按钮)neutral {string} 对话框中立按钮的文字内容(最左边按钮)neutralColor {string} | {number} 对话框中立按钮的文字颜色(最左边按钮)negative {string} 对话框取消按钮的文字内容(确定按钮左边的按钮)negativeColor {string} | {number} 对话框取消按钮的文字颜色(确定按钮左边的按钮)checkBoxPrompt {string} 勾选框文字内容checkBoxChecked {boolean} 勾选框是否勾选progress {Object} 配置对话框进度条的对象:
max {number} 进度条的最大值,如果为-1 则为无限循环的进度条horizontal {boolean} 如果为 true, 则对话框无限循环的进度条为水平进度条showMinMax {boolean} 是否显示进度条的最大值和最小值cancelable {boolean} 对话框是否可取消,如果为 false,则对话框只能用代码手动取消canceledOnTouchOutside {boolean} 对话框是否在点击对话框以外区域时自动取消,默认为 trueinputHint {string} 对话框的输入框的输入提示inputPrefill {string} 对话框输入框的默认输入内容通过这些选项可以自定义一个对话框,并通过监听返回的 Dialog 对象的按键、输入事件来实现交互。下面是一些例子。
模拟 alert 对话框:
模拟 confirm 对话框:
模拟单选框:
"处理中"对话框:
输入对话框:
使用这个函数来构造对话框,一个明显的不同是需要使用回调函数而不能像 dialogs 其他函数一样同步地返回结果;但也可以通过 threads 模块的方法来实现。例如显示一个输入框并获取输入结果为: