DataviewJS 的传参与复用

本话题及相关资源作教学用,请自行确保加载外部 JS 安全性问题,包括本话题中的 JS。

蓝奏云下载链接 密码: 7mcr

遇任何问题,请使用最新代码,先电脑端沙箱测试,尝试刷新代码块或重启 Ob。
额外需求仍请另建话题。友链:


DataviewJS 的翻页与随机 中,我们了解到 dv.view 语法调用外部 JS,同一文件可以在不同文档重复调用,这就达成了基本的复用。

然而,有时我们想要汇总的项目不尽相同。这时,需要用到 dv.view 的另一个功能:传参。

Dataview 官方文档 相关部分介绍如下:

如果你知晓 DataviewJS 小白手册“小白入门 DataviewJS 方法”,你会发现,这是导出一个对象,各属性逗号分隔,分别为我们设置的值。提醒:最常见报错 Unexpected identifier 就是忘记每项后写上逗号。

先从改变目标文件夹路径开始。

内部 DataviewJS 代码:

// 假设外部 JS 名为"dv-表格.js"
await dv.view('外部 JS 所在文件目录/dv-表格', { files: dv.pages(`"文件目录"`) })

在外部 JS 首行导入我们设置的属性:image

然后,就可以在代码中使用这个属性的值了:image

切换文件目录效果 GIF,点击展开

20240120_222541

通过这个简单的实例,你已经掌握了所需知识,可以动手实践了。

实例:dv- 检索

标题为对应 JS 名,见文首网盘链接。
原帖 DataviewJS 汇总全文及特定标题下内容并解决图片显示痛点

内部 DataviewJS 代码
const tars = {
  '任务一': 2,
  '任务二': 2,
}
await dv.view('JS 目录/dv-检索', {
  files: dv.pages(`"文件目录"`),
  kwd: !1, showHead: !1, //tars,
  obsidian, scale: 0.8, //mline: 5,
  tb: {
    '文档': p=> p.file.link,
    '档': p=> p.档,
  },
  //li: ([p, li])=> dv.paragraph(`##### ${p.file.link}\n${li}`),
})
各自定义属性说明
  • files:目标文件夹路径,按照 DataviewJS 格式。排序、筛选等依然照基本用法添加。
  • kwd:是否包括空文档,!1 为关,!0 为开。常用于汇总全文保留空文档。
    • 如汇总 1 周日记,可能其中有空文档,但汇总全文时依然希望保留跳转到这些文档的内部链接。
    • 启用 mline 时停用。
  • showHead:是否显示标题,!1 为关,!0 为开。常用于汇总全文。
  • tars:目标标题名称及级别,范围 1~6。可以写大于 6 的数值,表示不包含下级标题。
    • '任务一': 7 表现为假如标题“任务一”下还有低级别标题,只截取低级别标题前的内容。
    • 停用时,汇总全文。
  • obsidian:一个必要参数。
  • scale:表格输出原文缩放倍数,填 0 默认缩至 50% 大小。
  • mline:常用于画廊瀑布流式汇总。启用后的表现为:
    • 若有嵌入图片,选择首个展示。
    • 若无,依设置值截取文档正文前几行展示。数值不要太大。
    • 点击图片、正文区域跳转到对应文档,按住 Ctrl 点击在新标签页打开。
  • tb:表格输出,停用 li 属性时启用。
    • 第 1 项 key 为表头;第 2 项 value 为表体,其中 p 为函数变量。
  • li:文本、列表输出,按照 DataviewJS 格式。
    • p 为函数变量,li 代表汇总到的文本。

// 为 JS 单行注释语法,行内其后部分将被识别为注释。通过灵活加减 //,我们能快速启动或停用某属性。

效果 GIF:

切换文本、表格输出

20240120_220710

tars + 列表卡片式布局

20240120_221810

mline + 瀑布流式布局

20240120_215811

效果展示使用的 CSS:更新了坛里 Minimal Dataview 伪卡片 CSS
若你看过,可前去查看新增 cssclasses 相关说明。

相关:【求助】Dataview 如何筛选各个二级标题中的内容并用表格呈现

6 个赞

有一个问题啊,在 inline js 中,用 await 好像显示不出来数据啊,这个怎么办

切阅读模式 :wink:

也许你应该去英文论坛或插件的 GitHub 页面报告。

阅读模式可以,谢谢。
看来这个可以算 dataview 或者 obsidian 的 bug 了

使用DV标签的检索源码模式如下


但是检索出来还是不显示图片请问是为什么呢。

不太清楚。是用的最新 JS 文件吗。

更新:经沟通,可能与系统有关。

是最新的js文件,然后源码模式检索格式是这个。


难道是这里格式有问题么。

可以直接使用 CustomJS插件 复用片段

1 个赞