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

G
gmy 已提交
3 4
提供搜索框组件,用于提供用户搜索内容的输入区域。

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

## 子组件



## 接口

Search(options?: { value?: string; placeholder?: string; icon?: string; controller?: SearchController })

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

G
gmy 已提交
19 20 21 22 23 24
| 参数名      | 参数类型         | 必填 | 参数描述                                                     |
| ----------- | ---------------- | ---- | ------------------------------------------------------------ |
| value       | string           | 否   | 搜索文本值。                                                 |
| placeholder | string           | 否   | 无输入时的提示文本。                                         |
| icon        | string           | 否   | 搜索图标路径,默认使用系统搜索图标,支持的图标格式: svg、jpg和png。 |
| controller  | SearchController | 否   | 控制器。                                                     |
Y
yaoyuchi 已提交
25 26 27

## 属性

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

| 名称                    | 参数类型                                         | 描述                                           |
| ----------------------- | ------------------------------------------------ | ---------------------------------------------- |
H
hebingxue 已提交
32 33 34 35 36 37
| searchButton            | string                                           | 搜索框末尾搜索按钮文本值,默认无搜索按钮。         |
| placeholderColor        | [ResourceColor](ts-types.md#resourcecolor)      | 设置placeholder颜色。                           |
| placeholderFont         | [Font](ts-types.md#font)                     | 设置placeholder文本样式。                           |
| textFont                | [Font](ts-types.md#font)                     | 设置搜索框内文本样式。                               |
| copyOption<sup>9+</sup> | [CopyOptions](ts-appendix-enums.md#copyoptions9) | 设置文本是否可复制。                             |
| textAlign               | [TextAlign](ts-appendix-enums.md#textalign)      | 设置文本对齐方式。<br/>默认值:TextAlign.Start    |
Y
yaoyuchi 已提交
38 39 40

## 事件

H
geshi  
HelloCrease 已提交
41 42 43 44 45 46 47
| 名称                                       | 功能描述                                     |
| ---------------------------------------- | ---------------------------------------- |
| 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 已提交
48 49 50 51 52

## SearchController

Search组件的控制器,通过它操作Search组件。

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

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

设置输入光标的位置。

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

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

##  示例

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

  build() {
    Flex({ direction: FlexDirection.Row, justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
X
xiexiyun 已提交
82 83 84
      Text(this.submitValue)
      Text(this.changeValue)
      Search({value: this.changeValue, placeholder: 'Type to search', controller: this.controller})
Y
yaoyuchi 已提交
85 86 87 88 89
        .searchButton('Search')
        .width(400)
        .height(35)
        .backgroundColor(Color.White)
        .placeholderColor(Color.Grey)
90
        .placeholderFont({ size: 26, weight: 10, family: 'serif', style: FontStyle.Normal })
Y
yaoyuchi 已提交
91
        .onSubmit((value: string) => {
X
xiexiyun 已提交
92
          this.submitValue = value
Y
yaoyuchi 已提交
93 94
        })
        .onChange((value: string) => {
X
xiexiyun 已提交
95
          this.changeValue = value
Y
yaoyuchi 已提交
96
        })
97
        .margin({ top: 30, left:10, right:10 })
Y
yaoyuchi 已提交
98 99 100 101
    }
  }
}
```
102
![search](figures/search.png)