本身是js代码,那么应该是可以用.onclik进行行为绑定的? 而且dataview quert 的日历视图本身也是可以点击的,那么能否单dataviewjs 脚本实现搜索任务和互动的能力?
有点难搞, 似乎普通情况下, 用它自带的 taskList
就是最简单的
```dataviewjs
const frag = dv.taskList(dv.pages('"path/to/subfolder"').file.tasks.mutate(t => {
t.visual = `<span style='display: table-cell; width: 300px'>${t.text}</span> <span style='display: table-cell; width: 200px'>(${t.section})</span>`
}), false)
```
其中那个 t.visual
可用于在界面上重新设定 task 显示文本, 这机会可善加利用, 比如给 task 补充注释一些额外信息什么的
显示样式可以拿 css 搞一搞
这种调 taskList
函数的办法, 其生成的 HTML 元素可以点击互动, 点击 “完成” 后, 这修改真会存到对应笔记里
至于动态 “搜索任务”, 似乎有不少给搜索条件写按钮的 dvjs 样例, 可能道理类似
问题:
- 再怎么折腾, 也还是像 dv.list 而不像 dv.table (现在还没有 dv.taskTable 这函数)
- 遇到 task 嵌套时, 排版困难
- 交互仅限于点击 checker “完成任务 / 取消完成”, 更复杂的搞不定
但这是个动静较小, 好理解的方案
另两条更复杂的路线是
1 在 dvjs query 后, 把 task 信息完整的记录下来, 然后在已生成 DOM 元素之后, 给这些 task 的 <input>
绑定事件处理函数, 大致是模仿 dv 那个 rewriteTask 处理函数去改原笔记 (rewriteTask 干的事就是读笔记的纯文本, 找到 task 所在行, 给改个 [x]
出来, 写回去)
2 在 dvjs 生成表格时, 想办法让表格中的某些 cell 不只显示 “杀毒后的纯 markdown 片段”, 而是还要显示带 UI 交互的, 类似 dv.taskList
生成的片段
显然都比较折腾, 我先去研究了方案 2, 没搞定…
1 个赞
感谢耐心回答,我试试用css 和taskList 来做就好的
1 个赞