ts-basic-components-search.md 5.5 KB
Newer Older
Y
yaoyuchi 已提交
1 2
#  Search

3
搜索框组件,适用于浏览器的搜索内容输入框等应用场景。
G
gmy 已提交
4

H
HelloCrease 已提交
5 6 7
> **说明:**
>
> 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
Y
yaoyuchi 已提交
8 9 10 11 12 13 14

## 子组件



## 接口

15
Search(options?: { value?: string, placeholder?: string, icon?: string, controller?: SearchController })
Y
yaoyuchi 已提交
16

G
gmy 已提交
17
**参数:**
Y
yaoyuchi 已提交
18

Y
yamila 已提交
19 20 21
| 参数名     | 参数类型         | 必填 | 参数描述                                                     |
| ---------- | ---------------- | ---- | ------------------------------------------------------------ |
| value      | string           | 否   | 设置当前显示的搜索文本内容。                                 |
Y
yamila 已提交
22
| icon       | string           | 否   | 设置搜索图标路径,默认使用系统搜索图标。<br/>**说明:** <br/>icon的数据源,支持本地图片和网络图片。<br/>-&nbsp;支持的图片格式包括png、jpg、bmp、svg、gif和pixelmap。<br/>-&nbsp;支持Base64字符串。格式data:image/[png\|jpeg\|bmp\|webp];base64,[base64 data], 其中[base64 data]为Base64字符串数据。 |
Y
yamila 已提交
23
| controller | SearchController | 否   | 设置Search组件控制器。                                       |
Y
yaoyuchi 已提交
24 25 26

## 属性

G
gmy 已提交
27 28 29 30
除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性:

| 名称                    | 参数类型                                         | 描述                                           |
| ----------------------- | ------------------------------------------------ | ---------------------------------------------- |
31 32
| searchButton            | string                                           | 搜索框末尾搜索按钮文本内容,默认无搜索按钮。         |
| placeholderColor        | [ResourceColor](ts-types.md#resourcecolor)       | 设置placeholder文本颜色。                           |
Y
yamila 已提交
33 34
| placeholderFont         | [Font](ts-types.md#font)                         | 设置placeholder文本样式,包括字体大小,字体粗细,字体族,字体风格。目前仅支持默认字体族。                         |
| textFont                | [Font](ts-types.md#font)                         | 设置搜索框内输入文本样式,包括字体大小,字体粗细,字体族,字体风格。目前仅支持默认字体族。                           |
35 36
| textAlign               | [TextAlign](ts-appendix-enums.md#textalign)      | 设置文本在搜索框中的对齐方式。<br/>默认值:TextAlign.Start    |
| copyOption<sup>9+</sup> | [CopyOptions](ts-appendix-enums.md#copyoptions9) | 设置输入的文本是否可复制。                             |
Y
yaoyuchi 已提交
37 38 39

## 事件

40 41
除支持[通用事件](ts-universal-events-click.md)外,还支持以下事件:

H
geshi  
HelloCrease 已提交
42 43
| 名称                                       | 功能描述                                     |
| ---------------------------------------- | ---------------------------------------- |
44 45 46 47 48
| onSubmit(callback: (value: string) => void) | 点击搜索图标、搜索按钮或者按下软键盘搜索按钮时触发该回调。<br> -value: 当前搜索框中输入的文本内容。 |
| onChange(callback: (value: string) => void) | 输入内容发生变化时,触发该回调。<br> -value: 当前搜索框中输入的文本内容。  |
| onCopy(callback: (value: string) => void) | 长按搜索框弹出剪切板之后,点击剪切板的复制按钮触发该回调。<br> -value: 复制的文本内容。      |
| onCut(callback: (value: string) => void)  | 长按搜索框弹出剪切板之后,点击剪切板的剪切按钮触发该回调。<br> -value: 剪切的文本内容。      |
| onPaste(callback: (value: string) => void) | 长按搜索框弹出剪切板之后,点击剪切板的粘贴按钮触发该回调。<br> -value: 粘贴的文本内容。      |
Y
yaoyuchi 已提交
49 50 51

## SearchController

52
Search组件的控制器,目前通过它可控制Search组件的光标位置。
Y
yaoyuchi 已提交
53

54
### 导入对象
Y
yaoyuchi 已提交
55 56 57
```
controller: SearchController = new SearchController()
```
58
### caretPosition
Y
yaoyuchi 已提交
59

60
caretPosition(value: number): void
Y
yaoyuchi 已提交
61 62 63

设置输入光标的位置。

G
gmy 已提交
64
**参数:**
Y
yaoyuchi 已提交
65

G
gmy 已提交
66 67 68
| 参数名 | 参数类型 | 必填 | 参数描述                           |
| ------ | -------- | ---- | ---------------------------------- |
| value  | number   | 是   | 从字符串开始到光标所在位置的长度。 |
Y
yaoyuchi 已提交
69 70 71

##  示例

H
geshi  
HelloCrease 已提交
72 73
```ts
// xxx.ets
Y
yaoyuchi 已提交
74 75 76
@Entry
@Component
struct SearchExample {
Y
yamila 已提交
77 78 79
  @State changeValue: string = ''
  @State submitValue: string = ''
  controller: SearchController = new SearchController()
Y
yaoyuchi 已提交
80 81

  build() {
82 83 84 85 86
    Column() {
      Text('onSubmit:' + this.submitValue).fontSize(18).margin(15)
      Text('onChange:' + this.changeValue).fontSize(18).margin(15)
      Search({ value: this.changeValue, placeholder: 'Type to search...', controller: this.controller })
        .searchButton('SEARCH')
Y
yaoyuchi 已提交
87
        .width(400)
88
        .height(40)
Y
yamila 已提交
89
        .backgroundColor('#F5F5F5')
Y
yaoyuchi 已提交
90
        .placeholderColor(Color.Grey)
91 92
        .placeholderFont({ size: 14, weight: 400 })
        .textFont({ size: 14, weight: 400 })
Y
yaoyuchi 已提交
93
        .onSubmit((value: string) => {
Y
yamila 已提交
94
          this.submitValue = value
Y
yaoyuchi 已提交
95 96
        })
        .onChange((value: string) => {
Y
yamila 已提交
97
          this.changeValue = value
98 99 100 101 102
        })
        .margin(20)
      Button('Set caretPosition 1')
        .onClick(() => {
          // 设置光标位置到输入的第一个字符后
Y
yamila 已提交
103
          this.controller.caretPosition(1)
Y
yaoyuchi 已提交
104
        })
105
    }.width('100%')
Y
yaoyuchi 已提交
106 107 108
  }
}
```
Y
yamila 已提交
109 110

![search](figures/search.gif)