在受WordPress启发的Laravel PHP中创建一个medialibrary

poa*_*oas 6 javascript wordpress media-library

目前我正在Laravel框架中研究一个中间文件.我从用户体验的角度来看WordPress.选项卡媒体库显示您可以选择的图像.

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

在此输入图像描述

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

当我只使用普通的javascript时,我可以将一些ID放在一个关联数组中吗?这意味着每次切换回插入媒体时,我都需要找到相应的图像来重新检查它们吗?如果每次都要搜索数百个媒体项,该怎么办...

我觉得Underscore库可能会有所帮助,作为一个很好的选择,但还没有弄清楚如何使用它来尽可能平稳和快速...它看起来WordPress甚至没有"刷新"媒体项目.任何人都可以给我一些建议来模仿这种行为吗?

小智 1

一个简单的方法是:

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

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