hw1
设计
实现一个todolist
主页面
导航与tab
- 展示已有的todo项,点击后跳转到 详情子页面✔️
- 添加按钮,点击后跳转到 添加子页面✔️
- 底部tab栏,包含两个页面:左边为本地版(即主页面),右边为网页版✔️
- 如何让两个页面的数据同步、共享?—— @State & @Link
- 如何传递事项编号给子页面? —— 作为子页面的name传递,在pagemap处解析
详情子页面
- 展示todolist详情✔️
- 返回主界面/删除 按钮✔️
添加子页面
http,数据库
- 通过http请求获取简单的信息:当前时间/天气?然后进行包装处理✔️
- 添加后把信息存储到数据库✔️
- 返回/添加 按钮及操作✔️
- ⭐如何让添加操作返回后,原页面立即更新? —— pushDestination & onPop(父子都需要配置,且用push + onPop没办法)
- 如何存数据库 —— preference,把array转换为json格式存储,再把json转换为array展示(注意内容为空的时候不能转换为json,会报错),在每一次add/delete操作后对数据库进行存储(因为页面重启后没有回调,无法在最后进行存储)
网页版
WebView
- 另写一个html格式的todolist展示
- 展示已有的todo项,并且可以标记为已完成(同步)
- 不进入详情页,不添加
其它
让网页版和本地版的数据同步(也即“已完成”的状态)
-> 让页面观察到isCompleted属性的改变 —— 每次改变这一属性的时候,替换整个对象(⭐否则只改变了对象的成员的值,对象的指针没有变化,页面无法观察到改变)
-> 这一属性是由TodoItem控制的,因此往Item中传入整个对象数组以及index
-> ForEach:
-
遍历时的参数格式不能有误!必须先写item再写index,否则会把index识别为item
ForEach(this.totalTasks, (item: TodoItemModel, index: number) => {...}
在交互时,遇到了这样的情况:
ark改变 - web不改变
web改变 - ark改变
原因:web中检测不到数据的变化,这个数据是在web建立的一开始传入的,而且修改也不是通过web,因此无法通过web的监视器来监听,目前只能想到:在arkts中监听,有变化时手动更新web的数据✔️
问题
有bug:可能是因为本地页面的监视不够,只监视了对象数组,没有监视单个对象