- 1. construct [required]
- 查看 demo
- 查看 工作台配置
- 2. onFrameReady [optional]
- 3. affected [optional]
- 查看 demo
- 查看 工作台配置
- 4. isValid [optional]
- 查看 demo
- 查看 工作台配置
- 5. getData [optional]
- 查看 demo
- 查看 工作台配置
- 6. onResize [optional]
- 查看 demo
- 查看 工作台配置
- 7. destroy [optional]
- 查看 demo
- 查看 工作台配置
- 8. trig
- 查看 demo
- 查看 工作台配置
- Enhancer 提供给组件开发者 widget 相关的 SDK
1. construct [required]
- 组件初始化时会调用 construct 函数。
- 平台会给 construct 函数传递两个参数 (profile 和 context), 其中 profile 是用户在配置页面保存的 profile, context 里会包含当前组件依赖的变量及其对应的值。
- 当 profile 里某些配置项包含了变量, 需要通过
Enhancer.ZContext.parse(profile.xxx)
来替换变量的值。 如果某个配置项是起到开关作用的(比如 启用评论功能 这个配置项), 可以通过Enhancer.Util.testCondition(profile.xxx)
来获取对应的布尔值。 - 当组件初始化完时 需要调用
this.trig('complete')
来通知平台组件初始化完成。
当组件初始化里有数据加载这样的异步操作时, 如果组件提供的变量是依赖这些数据的, 那么this.trig('complete')
就必须要等这些数据准备好了再触发。
查看 demo
查看 工作台配置
2. onFrameReady [optional]
- 当同一个帧里的所有组件都初始化完成时, 平台就会调用这些组件的 onFrameReady 函数。
3. affected [optional]
- 当一个页面内任何组件通过
trig
的方式触发了一个事件, 平台就会遍历页面内的所有组件, 计算组件依赖的变量是否有变化, 如果有变化就调用这个组件的 affected 函数, 并将最新的 context 传给 affected 函数。 - 因此当组件 affected 的函数执行时, 需要去重新渲染组件。 在评论组件里, 组件渲染的代码被抽成了一个 render 函数, construct 和 affected 的时候都可以调。
注意:affected 执行的时候并不是一定要把组件全部重新渲染, 假设评论组件只在 评论列表标题 里配置了变量, 那么当 affected 函数执行时只需要去把标题重新渲染一下就可以了。 这些优化的控制交给组件开发者自己去处理。
查看 demo
查看 工作台配置
4. isValid [optional]
- 如果用户配置了 当页面上某个事件发生时要检查某个窗口(一个窗口对应一个组件,检查窗口即检查组件), 那么当这个事件触发时, 平台就会调用那个组件的 isValid 函数。
- isValid 函数通过返回 true 或 false 来表示当前组件的数据是否准备好。 如果准备好了, 平台就会继续调用组件的 getData 函数来获取数据。
评论组件需要在这个函数里去判断当前评论框里的内容是否超过了最大的字符数, 如果超过了就返回 false。
查看 demo
查看 工作台配置
5. getData [optional]
- 组件初始化完成后, 平台会调用 getData 函数。
- 当 isValid 返回 true 时, 平台紧接着也会调用 getData 函数
- getData 函数返回所有该组件在配置器里的 getSupportedVariableList 函数里声明的变量, 将所有这些变量放到一个对象里一起返回。
评论组件需要返回 content 这个变量:{content: "xx"}
。
查看 demo
查看 工作台配置
6. onResize [optional]
- 当组件所在的窗口大小改变时, 平台会调用组件的 onResize 函数。
- 一些复杂的组件可通过 onResize 来重新渲染组件, 让组件适应窗口的大小。
查看 demo
查看 工作台配置
7. destroy [optional]
- 当组件被销毁时, 平台会调用组件的 destroy 函数。
- 可以在这个函数里解绑之前绑定的事件, 销毁在组件内部初始化的对象等。
查看 demo
查看 工作台配置
8. trig
- 通过组件的 trig 来触发事件。