diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 1a3423fb1..a1d17b8dc 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -1216,7 +1216,7 @@ func renderAttributeView(attrView *av.AttributeView, viewID, query string, page, } // 做一些数据兼容和订正处理 - checkViewInstance(attrView, view) + checkViewInstance(attrView) upgradeAttributeViewSpec(attrView) switch view.LayoutType { diff --git a/kernel/model/attribute_view_fix.go b/kernel/model/attribute_view_fix.go index 0538c61eb..119826ed8 100644 --- a/kernel/model/attribute_view_fix.go +++ b/kernel/model/attribute_view_fix.go @@ -23,14 +23,23 @@ import ( "github.com/siyuan-note/siyuan/kernel/treenode" ) -func checkViewInstance(attrView *av.AttributeView, view *av.View) { - if av.LayoutTypeGallery == view.LayoutType && nil == view.Gallery { - // 切换为画廊视图时可能没有初始化画廊实例 https://github.com/siyuan-note/siyuan/issues/15122 - if nil != view.Table { - view.LayoutType = av.LayoutTypeTable - av.SaveAttributeView(attrView) +func checkViewInstance(attrView *av.AttributeView) { + changed := false + for i, view := range attrView.Views { + if av.LayoutTypeGallery == view.LayoutType && nil == view.Gallery { + // 切换为画廊视图时可能没有初始化画廊实例 https://github.com/siyuan-note/siyuan/issues/15122 + if nil != view.Table { + view.LayoutType = av.LayoutTypeTable + changed = true + } else { + attrView.Views = append(attrView.Views[:i], attrView.Views[i+1:]...) + changed = true + } } } + if changed { + av.SaveAttributeView(attrView) + } } func upgradeAttributeViewSpec(attrView *av.AttributeView) {