事件
在 Storyboard 中可以为构件配置事件的处理,例如:
brick: "your-brick"
events:
something.happened:
action: "console.warn"
others.happened:
- action: "console.log"
- target: "#other-brick"
method: "openModal"
对于以上配置,在构件 <your-brick>
发起 something.happened
事件时,将触发内建处理函数 console.warn
;而在发起 others.happened
事件时,将依次触发内建函数 console.log
、找到 id="other-brick"
的构件并调用它的 openModal()
方法。
构件的事件处理器主要有三种:内建处理器、Provider 处理器、自定义构件处理器。
内建处理器
使用 action: "..."
来配置内建处理器,使用 args: [...]
设置传递给处理器的参数。
当前内建处理器主要有以下几类:
history.*
location.*
window.*
event.*
console.*
message.*
handleHttpError
context.*
state.*
localStorage.*
sessionStorage.*
tpl.*
内建处理器:history.*
更多信息请参考 History 会话历史。
Action |
---|
history.push |
history.replace |
history.goBack |
history.goForward |
history.pushQuery |
history.replaceQuery |
history.pushAnchor |
history.reload |
history.block |
history.unblock |
内建处理器:location.*
Action | Arguments | description |
---|---|---|
location.reload | - | 浏览器刷新页面 |
location.assign | url: string | 浏览器跳转页面,例如 `${BASE_URL}${PATH_NAME}?q=any` |
内建处理器:window.*
Action | Arguments | description |
---|---|---|
window.open | url: string, target: string | 打开页面(注意:需要自行按需使用 BASE_URL 补上 /next 的前缀) |
window.postMessage | data: unknown, origin?: string | 发送消息 |
内建处理器:event.*
Action | Arguments | description |
---|---|---|
event.preventDefault | - | 阻止事件的默认行为 |
内建处理器:console.*
Action | Arguments | description |
---|---|---|
console.log | any | - |
console.error | any | - |
console.warn | any | - |
console.info | any | - |
内建处理器:message.*
Action | Arguments | description |
---|---|---|
message.success | string | 成功提示 |
message.error | string | 失败提示 |
message.warn | string | 告警提示 |
message.info | string | 信息提示 |
内建处理器:handleHttpError
Action | Arguments | description |
---|---|---|
handleHttpError | - | 请求报错弹框提示 |
内建处理器:context.*
context.*
接收两个参数:context name 和 context value。更多信息请参考 Context 上下文。注意:不能对绑定构件属性的 Context 执行 context.*
操作。
Action | Arguments | description |
---|---|---|
context.assign | name: string, newValue: any | 使用 Object.assign() 更新已有的 Context 值 |
context.replace | name: string, newValue: any | 使用新的值替换已有的 Context 值 |
context.load | name: string | 主动加载一个懒加载的 Context |
context.refresh | name: string | 强制更新一个异步的 Context |