我正在为一位客户工作,他要求我为其网站准备一个模块(使用 Yii 编写),该模块具有以下功能:
- 它显示了 mysql_result 中的 3 个元素,从 offset=0 开始。
- 用户可以单击其中任何一个以将它们标记为“已读”。这使得所需的项目消失并出现下一个项目。也就是说,如果您正在显示项目
3 4 5
并单击4
,则该项目将消失并出现数字6
,这意味着结果将是3 5 6
。 - 显示的元素是局部视图,“删除”项目的按钮是每个局部视图中的小部件。
- 用户可以使用一些
<<
和>>
箭头在项目列表中来回移动结果。 - 客户给我的选项之一是显示页面列表( 1 | 2 | 3 | 4... 等等),但删除项目意味着页面数量在未来某个时间会减少,再加上如果数量很大,我需要更灵活的东西,比如最多只显示当前页面和其他 4 页。另一种选择是保留 << 和 >> 箭头。
- 我试图说服客户分页和“实时列表”是一个非常糟糕的主意,但他拒绝了将可视化限制为前 3 个项目的想法(请记住,最终您将删除它们,因此将能够看到以下项目)。
我正在使用 Yii、MySQL 和 jQuery 开发它,但由于这个活动列表,我无法使用 CPagination。我不是在问代码,只是一些指导方针,因为我第三次尝试这样做时迷路了。
关于系统的一些基础知识:
- 我有一个控制器,它加载了这个模块的前 3 个项目。
- 我在此控制器中执行了一些操作,用于获取页面中的下一个项目(但可能与当前对象不同。我的一个问题在这里)和整个页面。
- 每个项目都能够将自己标记为“已读”,这将使该项目在您下次获取某些结果时不会出现。
- 每隔 1 秒,我检查已标记为已读的项目,从 DOM 中删除并使用我在第二个项目符号中定义的操作附加一些新项目。
- 每次用户点击
<<
or>>
时,我都会重新加载上一页/下一页(这显然不是问题。如果你在最后一页并且没有更多要添加的项目,你就留在那儿。但是,如果你清空页面,我没有任何方法可以检测到并向后滚动一页)。
如您所见,如果没有分页按钮,这种头痛会更容易,但客户强迫我放它们。你们会怎么做?提前致谢
编辑:客户决定以随机方式获得结果。没有更多的分页,所以问题就消失了。@thaddeusmt 的答案可能对我没有太大帮助,但我会认为它是有效的,因为它可能对与我有类似问题的其他人非常有用。干杯