测试过,可以直接用.来引用YAML字段,但若是把YAML字段名称放入变量,dataview有提供方法动态读取变量里的YAML字段名的内容吗?
dataview 不会弄这个, dataviewjs 可以
假设有些文件
---
alias: note1
field1: valueA
field2: valueB
field3: valueC
field4: valueD
---
正文...
---
alias: note2
field1: valueE
field3: valueG
---
正文2...
那么
```dataviewjs
const my_field = "field3"
const frontmatters = dv.pages().file.frontmatter
dv.list(frontmatters
.filter(fm => fm.hasOwnProperty(my_field))
.map(fm => `alias: ${fm.alias} -> ( ${my_field}: ${fm[my_field]} )`)
)
```
可以找出库中所有带 my_field 变量, 即含有 field3: xxx
的笔记
let yaml='tags'
let file=dv.page('xxxx')
file.tags
file['tags']
file[yaml]
差不多这样
to probe:
这段代码只能取得标准YAML,而inline YAML取不了
to lazyloong:
已知字段名称或能拼出字段名称时,可以使用这种方式。
原先回答的是 “字段名不想硬编码, 只能动态给出字段” 该怎么办
如果问题是 “必须写成 inline field, 而非 FrontMatter 里的 field”,
那么可以把原先的 xxx.frontmatter[field]
改成 page[field]
, 道理一样
连字段名都不知道或者无法生成的话,用什么方法都取不出来吧