0

我正在做一个带有javascript 库的blockly的项目,我不明白Blockly.FieldDropdown函数的 menuGenerator 变量接受什么类型的参数。在这里你可以看到感兴趣的代码:

/**
* Class for an editable dropdown field.
* @param {(!Array.<!Array>|!Function)} menuGenerator An array of options
*     for a dropdown list, or a function which generates these options.
* @param {Function=} opt_validator A function that is executed when a new
*     option is selected, with the newly selected value as i ts sole 
argument.
*     If it returns a value, that value (which must be one of the options) 
will
*     become selected in place of the newly selected option, unless the 
return
*     value is null, in which case the change is aborted.
* @extends {Blockly.Field}
* @constructor
*/
Blockly.FieldDropdown = function(menuGenerator, opt_validator) {

我不明白@param {(!Array.|!Function)}是什么意思

4

1 回答 1

0

文档有更多信息和示例,包括下拉选项的基本结构以及如何制作动态下拉菜单

基本结构是:

每个下拉菜单都是使用菜单选项列表创建的。每个选项由两个字符串组成。第一个是要显示的人类可读文本。第二个是字符串常量,在将选项保存到 XML 时使用。这种分离允许在语言之间保留下拉菜单的设置。例如,一个块的英语版本可以定义[['left', 'LEFT'], ['right', 'RIGHT']],而同一块的德语版本可以定义 [['links', 'LEFT'], ['rechts', 'RIGHT']]

对于动态菜单:

可以提供一个在调用时返回选项列表的函数,而不是提供一个静态选项列表。每次打开菜单时,都会调用该函数并重新计算选项。

如果menuGenerator是一个数组,则使用它;如果它是一个函数,它会在菜单打开时运行。该函数不接受任何参数;它返回一个选项列表,结构如上所述。

于 2018-05-17T20:53:06.020 回答