js-apis-formextension.md 5.9 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
# FormExtension

> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

提供FormExtension卡片扩展相关接口。

## 导入模块

```
import FormExtension from '@ohos.application.FormExtension';
```

## 权限



## 属性

| 名称    | 参数类型                                                | 可读 | 可写 | 说明                                                |
| ------- | ------------------------------------------------------- | ---- | ---- | --------------------------------------------------- |
| context | [FormExtensionContext](js-apis-formextensioncontext.md) | 是   | 否   | FormExtension的上下文环境,继承自ExtensionContext。 |

## onCreate

onCreate(want: Want): formBindingData.FormBindingData

卡片提供方接收创建卡片的通知接口。

- 参数:

  | 参数名 | 类型                                   | 必填 | 说明                                                         |
  | ------ | -------------------------------------- | ---- | ------------------------------------------------------------ |
34
  | want   | [Want](js-apis-featureAbility.md#want) | 是   | 当前Extension相关的Want类型信息,包括卡片ID、卡片名称、卡片样式等。这些卡片信息必须作为持久数据进行管理,以便后续更新和删除卡片。 |
35 36 37 38 39 40 41 42 43 44

- 返回值:

  | 类型                                                         | 说明                                                        |
  | ------------------------------------------------------------ | ----------------------------------------------------------- |
  | [formBindingData.FormBindingData](js-apis-formbindingdata.md#formbindingdata) | 一个formBindingData.FormBindingData对象,卡片要显示的数据。 |

- 示例:

  ```
Y
yangzk 已提交
45 46 47 48 49 50 51 52 53 54
  export default class MyFormExtension extends FormExtension {
      onCreate(want) {
          console.log('FormExtension onCreate, want:' + want.abilityName);
          let dataObj1 = {
              temperature:"11c",
              "time":"11:00"
          };
          let obj1 = formBindingData.createFormBindingData(dataObj1);
          return obj1;
      }
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
  }
  ```

## onCastToNormal

onCastToNormal(formId: string): void

卡片提供方接收临时卡片转常态卡片的通知接口。

- 参数:

  | 参数名 | 类型   | 必填 | 说明                     |
  | ------ | ------ | ---- | ------------------------ |
  | formId | string | 是   | 请求转换为常态的卡片ID。 |

- 示例:

  ```
Y
yangzk 已提交
73 74 75 76
  export default class MyFormExtension extends FormExtension {
      onCastToNormal(formId) {
          console.log('FormExtension onCastToNormal, formId:' + formId);
      }
77 78 79 80 81 82 83
  }
  ```

## onUpdate

onUpdate(formId: string): void

84
卡片提供方接收更新卡片的通知接口。获取最新数据后调用[FormExtensionContext](js-apis-formextensioncontext.md)的updateForm接口刷新卡片数据。
85 86 87 88 89 90 91 92 93 94

- 参数:

  | 参数名 | 类型   | 必填 | 说明               |
  | ------ | ------ | ---- | ------------------ |
  | formId | string | 是   | 请求更新的卡片ID。 |

- 示例:

  ```
Y
yangzk 已提交
95 96 97 98 99 100 101 102 103 104
  export default class MyFormExtension extends FormExtension {
      onUpdate(formId) {
          console.log('FormExtension onUpdate, formId:' + formId);
          let obj2 = formBindingData.createFormBindingData({temperature:"22c", time:"22:00"});
          this.context.updateForm(formId, obj2)
              .then((data)=>{
                  console.log('FormExtension context updateForm, data:' + data);
              }).catch((error) => {
              console.error('Operation updateForm failed. Cause: ' + error);});
      }
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
  }
  ```

## onVisibilityChange

onVisibilityChange(newStatus: { [key: string]: number }): void

卡片提供方接收修改可见性的通知接口。

- 参数:

  | 参数名    | 类型                      | 必填 | 说明                         |
  | --------- | ------------------------- | ---- | ---------------------------- |
  | newStatus | { [key: string]: number } | 是   | 请求修改的卡片ID和可见状态。 |

- 示例:

  ```
Y
yangzk 已提交
123 124 125 126 127 128 129 130 131 132 133 134 135
  export default class MyFormExtension extends FormExtension {
      onVisibilityChange(newStatus) {
          console.log('FormExtension onVisibilityChange, newStatus:' + newStatus);
          let obj2 = formBindingData.createFormBindingData({temperature:"22c", time:"22:00"});
  
          for (let key in newStatus) {
              console.log('FormExtension onVisibilityChange, key:' + key + ", value=" + newStatus[key]);
              this.context.updateForm(key, obj2)
                  .then((data)=>{
                      console.log('FormExtension context updateForm, data:' + data);
                  }).catch((error) => {
                  console.error('Operation updateForm failed. Cause: ' + error);});
          }
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
      }
  }
  ```

## onEvent

onEvent(formId: string, message: string): void

卡片提供方接收处理卡片事件的通知接口。

- 参数:

  | 参数名  | 类型   | 必填 | 说明                   |
  | ------- | ------ | ---- | ---------------------- |
  | formId  | string | 是   | 请求触发事件的卡片ID。 |
  | message | string | 是   | 事件消息。             |

- 示例:

  ```
Y
yangzk 已提交
156 157 158 159
  export default class MyFormExtension extends FormExtension {
      onEvent(formId, message) {
          console.log('FormExtension onEvent, formId:' + formId + ", message:" + message);
      }
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177
  }
  ```

## onDestroy

onDestroy(formId: string): void

卡片提供方接收销毁卡片的通知接口。

- 参数:

  | 参数名 | 类型   | 必填 | 说明               |
  | ------ | ------ | ---- | ------------------ |
  | formId | string | 是   | 请求销毁的卡片ID。 |

- 示例:

  ```
Y
yangzk 已提交
178 179 180 181
  export default class MyFormExtension extends FormExtension {
      onDestroy(formId) {
          console.log('FormExtension onDestroy, formId:' + formId);
      }
182 183
  }
  ```