dv搜索结果可以编辑的方案

正常的情况是,dv的结果只能查看,不能编辑。
现在通过一些方式,可以使dv的结果,可以进行编辑,方便的对原数据进行操作。

所需的插件

metaedit
dataview

插件配置

metaedit

需要在下面的Names中,写入 “新的内容”, Values里面不需要写

dataview

这个插件不需要任何配置

测试用的文件

建立三个文件,如下图所示

核心部分(最重要)

最核心的部分是dataviewjs的代码

```dataviewjs
// 这个是按钮的点击函数
const {update,autoprop} = this.app.plugins.plugins["metaedit"].api;

const buttonMaker = (pn, pv, fpath) => {
	//  选项,值,路径
    const btn = this.container.createEl('button', {"text": pv});
    btn.addEventListener('click', async (evt) => {
        evt.preventDefault();
		const newtext = await autoprop("新的内容")
        await update(pn, newtext, fpath);
    });
    return btn;
}

dv.table(["名字", "颜色", "大小"],
	dv.pages("#水果")
	.map(t=>[t.file.link, buttonMaker('颜色',t.颜色,t.file.path), buttonMaker('大小', t.大小, t.file.path)])
)
```
  • 预览的效果
    image

实际操作效果图

GIF

9 个赞

大家对代码有什么修改的意见,都可以在下面回复

最好把原来的内容读取在编辑框中,修改并不一定重新写。

1 个赞

这两个插件的联动真不错。

不错不错,持续关注。

希望两个插件联动的最终效果,能像notion数据库那样:
展示结果以后,能随时修改表格里的结果,新增列、删除列,之类的。
当然,修改以后,对应的页面的属性值,也同步修改。

能不能实现修改YAML区的数据?我没试成功。

最好是不要使用这样的方式去修改YAML,可能会有未知错误导致丢失文档内容,每个人的YAML区设定的都不一样,每篇笔记说不定YAML也不一样,之前使用DB-FOLDER去修改YAML就发现会造成YAML区丢失内容,更严重会丢失内文,也许你可以考虑外部的Markdown编辑器或是其他工具去做批量修改的这件事情

好的,谢谢,那我就不尝试了,免得丢失文件,谢谢!!

“新的内容”可以改成其他词吗?这词只是作显示作用吧,影响代码吗?

代码上也把“新的内容”修改成对应的文字?