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

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

提供搜索框组件,用于提供用户搜索内容的输入区域。

## 权限列表



## 子组件



## 接口

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

- 参数

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


## 属性

H
HelloCrease 已提交
33 34 35 36 37 38
| 名称                      | 参数类型                                     | 默认值  | 描述                    |
| ----------------------- | ---------------------------------------- | ---- | --------------------- |
| searchButton            | string                                   | 无    | 搜索框末尾搜索按钮文本值,默认无搜索按钮。 |
| placeholderColor        | [ResourceColor](../../ui/ts-types.md)    | -    | 设置placeholder颜色。      |
| placeholderFont         | [Font](../../ui/ts-types.md)             | -    | 设置placeholder文本样式。    |
| textFont                | [Font](../../ui/ts-types.md)             | -    | 设置搜索框内文本样式。           |
L
luoying_ace_admin 已提交
39
| copyOption<sup>9+</sup> | [CopyOptions](ts-basic-components-text.md) | CopyOptions.CrossDevice | 设置文本是否可复制。 |
Y
yaoyuchi 已提交
40 41 42

## 事件

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

## SearchController

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

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

61
caretPosition(value: number): void
Y
yaoyuchi 已提交
62 63 64 65 66

设置输入光标的位置。

- 参数

H
geshi  
HelloCrease 已提交
67 68
  | 参数名   | 参数类型   | 必填   | 默认值  | 参数描述              |
  | ----- | ------ | ---- | ---- | ----------------- |
Y
yaoyuchi 已提交
69 70 71 72 73 74
  | value | number | 是    | -    | 从字符串开始到光标所在位置的长度。 |



##  示例

H
geshi  
HelloCrease 已提交
75 76
```ts
// xxx.ets
Y
yaoyuchi 已提交
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
@Entry
@Component
struct SearchExample {
  @State changevalue: string = ''
  @State submitvalue: string = ''
  controller: SearchController = new SearchController()

  build() {
    Flex({ direction: FlexDirection.Row, justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
      Text(this.submitvalue)
      Text(this.changevalue)
      Search({value: '', placeholder: 'Type to search', controller: this.controller})
        .searchButton('Search')
        .width(400)
        .height(35)
        .backgroundColor(Color.White)
        .placeholderColor(Color.Grey)
        .placeholderFont({ size: 50, weight: 10, family: 'serif', style: FontStyle.Normal })
        .onSubmit((value: string) => {
          this.submitvalue = value
        })
        .onChange((value: string) => {
          this.changevalue = value
        })
        .margin({ top: 30 })
    }
  }
}
```