FunctionPage是Page写法的wrapper,实例化时会调用该函数式声明,用法同Page。

写法示例

  1. import { JSON, JSONObject } from "waft-json";
  2. import { console, getDataSource, FunctionPage, Props, Event, MessageEvent } from "waft";
  3. // 支持function写法
  4. let _page: FunctionPage;
  5. let percent: i32 = 42;
  6. export function Index(page: FunctionPage): void{
  7. _page = page;
  8. // 设置默认的state
  9. page.setState(JSON.stringify(getDataSource()));
  10. // 添加监听事件
  11. page.addEventListener("plus", (event: Event)=>{
  12. _page.setState(`{"percent": "${(percent++).toString()}%"}`);
  13. });
  14. page.addEventListener("minus", (event: Event)=>{
  15. _page.setState(`{"percent": "${(percent--).toString()}%"}`);
  16. });
  17. page.onshow = (): void =>{
  18. // 页面显示
  19. console.log('page onShow');
  20. }
  21. page.onload = (query: JSONObject): void=>{
  22. // 页面加载后
  23. console.log('page onLoad:' + JSON.stringify(query));
  24. }
  25. page.onmessage = (event: MessageEvent): void=>{
  26. // 信息推送更新
  27. console.log('page onMessage:' + JSON.stringify(event.data));
  28. // 如果需要进行更新界面
  29. if(event.data.has("dataSource")){
  30. _page.setState(event.data.getObject("dataSource").toString());
  31. }
  32. }
  33. }

事件响应

响应xml中的事件
xml:

  1. <div class="button" onTap="buttonClick">getSystemInfoSync</div>

.ts

  1. component.addEventListener('buttonClick', function (event: string) {
  2. const result = system.getSystemInfoSync();
  3. log('--> getSystemInfo result:' + result)
  4. });