在 HarmonyOS 静态卡片中,FormLink 的 message 类型如何触发后台事件?

我想通过卡片触发一个后台逻辑,比如更新数据之类的,看文档里说可以用 FormLink 的 "message" 类型触发 onFormEvent(),但我卡片点了没反应,是不是我能力写错了?

FormLink({
  action: "message",
  abilityName: "EntryAbility",
  params: {
    message: "refreshData"
  }
}) {
  Button("触发事件")
}

FormExtensionAbility 里要怎么写才能接收到这个事件?

阅读 234
1 个回答

建议在同学你的 FormExtensionAbility.ts 中,重写以下方法:

onFormEvent(formId: string, message: string) {
  console.info(`收到事件 message: ${message}`)
  if (message === "refreshData") {
    // 执行数据刷新逻辑
  }
}

abilityName 需要是你注册的 FormExtensionAbility 对应 Ability 名;
不能直接使用 UIAbility 的类名来接收消息;
params 中的键为 'message',值为你想处理的事件标识。