8

目前我正在开发 Laravel 框架中的媒体库。我从用户体验的角度来看 WordPress。媒体库选项卡显示您可以选择的图像。

  1. 我在“插入媒体”中检查了两个图像(Shift + 单击)
  2. 我切换到“特色图片”并检查特色图片的一张图片。
  3. 当我切换回插入媒体时,它会记住之前选择的两个图像并忘记选中的特色图像。

在此处输入图像描述

WordPress 如何“记住”在“插入媒体”视图中检查了哪些图像。这是他们使用存储在模型中的一些数据的主干视图吗?因为每次我在插入媒体和特色图片之间切换时,UL元素都会改变它的id属性:(__attachments-view-xxx).

当我只使用普通的 javascript 时,我可以将一些 ID 放在关联数组中吗?意思是每次切换回Insert Media都需要找对应的图片重新检查?如果您每次都要搜索数百个媒体项目怎么办...

我觉得Underscore 库作为一个不错的选择可能会有所帮助,但还没有弄清楚如何使用它来使一切尽可能顺利和快速......看起来 WordPress 甚至没有“刷新”媒体项目. 谁能给我一些建议来模仿这种行为?

4

1 回答 1

0

一个简单的方法是:

  • 图库视图中的每个项目都有一个唯一的 ID(例如来自 wordpress 的实际 ID)。例如,它可以存储为 data-attribute 或 html id 属性。
  • 然后,您有单独的数组来存储每个选项卡的选定项目的 ID(插入媒体/特色图像)
  • 当用户单击一个项目时,该项目的 ID 将添加(或删除)到他正在查看的选项卡的相应数组中
  • 当用户切换选项卡时,您首先取消选择图库中的所有内容(删除将它们标记为选中的类),然后浏览相应的数组并重新选择该列表中的内容。

当然,我确信 Wordpress 正在做一些更精致的事情,比如将它从 AJAX 请求中获得的所有图像的列表存储为对象,然后在该列表上执行这些操作,并在基于图库视图中显示/隐藏项目在您选择的选项卡上。但总体思路是一样的。

于 2021-12-04T14:08:31.353 回答