没有查询字符串参数的动态数据库请求
Dynamic database requests without query string parameters
所以我有一个项目卡片列表(项目是片段),我希望能够用单击的卡片中的内容填充一个叠加层。
我正在考虑让每个项目卡片都有一个 data-slug
属性,然后可以在页面 javascript 中的游标查找中使用该属性:return self.apos.docs.getManager('project').find(req, {slug: selected})
,然后将使用 $('#overlay').innerHTML()
来更新内容,但感觉必须有更好的方法来执行此操作。在这一点上我很确定我一直在尝试使用前端代码访问后端撇号函数,这是行不通的。
我目前拥有的:
$(function () {
var projects = document.querySelectorAll('.project');
console.log(projects);
$(projects).on('click', function () {
var slug = this.id;
var project = self.apos.docs.getManager('standard-project').find(req, { slug: slug });
});
我定义项目的那一行只会产生各种错误。
我想另一种选择是为每个项目渲染和隐藏一个叠加层,除非它有一个 active
class,但这似乎非常低效并且可能会增加几秒钟的页面加载时间.
很高兴您正在查看 Apostrophe!
内部团队已经通过几种方式解决了这个问题。
最简单的方法是 AJAX 将实际作品展示页面模板中的标记添加到您的叠加层中。这包括在卡片的前端留下一些线索(例如页面的 url),然后在点击处理程序中提取它,请求页面,并用收到的内容填充标记。
收到的标记将是您 apostrophe-pieces-pages
模块的 views/show.html
中的标记
所以我有一个项目卡片列表(项目是片段),我希望能够用单击的卡片中的内容填充一个叠加层。
我正在考虑让每个项目卡片都有一个 data-slug
属性,然后可以在页面 javascript 中的游标查找中使用该属性:return self.apos.docs.getManager('project').find(req, {slug: selected})
,然后将使用 $('#overlay').innerHTML()
来更新内容,但感觉必须有更好的方法来执行此操作。在这一点上我很确定我一直在尝试使用前端代码访问后端撇号函数,这是行不通的。
我目前拥有的:
$(function () {
var projects = document.querySelectorAll('.project');
console.log(projects);
$(projects).on('click', function () {
var slug = this.id;
var project = self.apos.docs.getManager('standard-project').find(req, { slug: slug });
});
我定义项目的那一行只会产生各种错误。
我想另一种选择是为每个项目渲染和隐藏一个叠加层,除非它有一个 active
class,但这似乎非常低效并且可能会增加几秒钟的页面加载时间.
很高兴您正在查看 Apostrophe!
内部团队已经通过几种方式解决了这个问题。
最简单的方法是 AJAX 将实际作品展示页面模板中的标记添加到您的叠加层中。这包括在卡片的前端留下一些线索(例如页面的 url),然后在点击处理程序中提取它,请求页面,并用收到的内容填充标记。
收到的标记将是您 apostrophe-pieces-pages
模块的 views/show.html