HarmonyOS NEXT鸿蒙开发:Select下拉控件

说明

官网API

相当于 HTML 中的 <select> 标签,如下图:

接口

Select(options: Array<SelectOption>)
参数
  • options:类型:Array<SelectOption>,必填,设置下拉选项。

SelectOption对象

属性

  • value:类型:ResourceStr,必填,下拉选项内容。

  • icon:类型:ResourceStr,下拉选项图片。

例子

Select([
  { value: '北京' },
  { value: '黑龙江' },
  { value: '吉林' },
])
  .font({ size: 20})

方法

设置默认选中索引

设置下拉菜单初始选项的索引,第一项的索引为 0 。当不设置selected 属性或设置异常值时,默认选择值为 -1,菜单项不选中;当设置为 undefined、null 时,选中第一项。

从API version 10开始,该参数支持 $$ 双向绑定变量,详见 链接。

selected(value: number | Resource)
参数
  • value:类型:number | Resource,必填,下拉菜单初始选项的索引。

提示

如下图,只设置 select() 方法,显示菜单时,才会显示默认选中项(如:紫色框),控件本身是空白的(如红框)

例子

Select([
  { value: '北京' },
  { value: '黑龙江' },
  { value: '吉林' },
])
  .selected(0) // 默认选中第一项
  // .value('北京')
  .font({ size: 20})

设置默认选中显示的值

设置下拉按钮默认显示的文本内容。当菜单选中时默认会替换为菜单项文本内容。

从API version 10开始,该参数支持 $$ 双向绑定变量,详见 链接。

value(value: ResourceStr)
参数
  • value:类型:ResourceStr,必填,下拉按钮本身的文本内容。

提示

如下图:只设置 value() 方法,那么控件本身会显示内容(如红框),展开菜单时,不会显示默认选中项(如:紫框)

例子

Select([
  { value: '北京' },
  { value: '黑龙江' },
  { value: '吉林' },
])
  .value('北京')
  .font({ size: 20})

例子2

如果 value() 设置的是不存在的值,也会正常显示,如下图:海南 就不在列表中,但仍然会正常显示

Select([
  {value:"北京"},
  {value:"黑龙江"},
  {value:"吉林"}
])
  .value("海南") // 设置默认值,会显示到控件本身

selected 和 value 同时设置

如果有 默认选中 的值,那么 selected() 和 value() 都要设置

bug

如果 selected() 设置默认值,与 value() 设置的默认值,不一致,就会出现bug,如下图:

Select([
  {
    value:"北京"
  },
  {
    value:"黑龙江"
  },
  {
    value:"吉林"
  }
])
  .selected(10) // 索引值,从0开始,1表示第二项黑龙江
  .value("海南") // 设置默认值,会显示到控件本身

其他方法

详见官网 链接

案例

const ADDRS:Array<SelectOption> = [
  { value: '北京' },
  { value: '黑龙江' },
  { value: '吉林' },
]


@State addrIndex:number = 0
@State addrText:string = "北京"

Select(ADDRS)
   .selected($$this.addrIndex) // 双向绑定
   .value($$this.addrText)     // 双向绑定
   .font({ size: 20})

原文出处:/show_1GW3WukH199.html