[英]Shopify Liquid tag javascript rendering
我有一个这样定义的自制液体标签:
class SomeList < Liquid::Block
def render(context)
context.stack do
context['list_items'] = get_back_list_items()
render_all(@nodelist, context)
end
end
end
然后可以在这样的模板中使用它:
{% some_list %}
{% for item in list_items %}
<p>{{ item.name }}</p>
{% endfor %}
{% endsome_list %}
我想为这个标签添加一个“加载更多”功能,可以由 JS 调用触发。 我无法控制模板中块内的内容。
我有个主意:
nodelist
在 JSON不确定这是否是正确的方法。 我觉得我一定不是唯一一个试图实现这一目标的人,也许存在更好的解决方案。 无论如何,我仍然无法在实例化后将序列化的节点列表 JSON 加载到标签中......
一种常见的方法是在初始页面请求的 DOM 元素 id 中呈现初始列表内容。 单击按钮时(在您的情况下为“加载更多”),向后端发送 XHR 请求,该请求将以 HTML 片段的新扩展列表进行响应。 在 XHR 响应中,将容器 DOM 元素的 HTML(片段)内容替换为 HTML。
这样您就不必执行复杂的操作,例如将 JavaScript 对象同步到 DOM。 您只需将 DOM 内容替换为新内容。 JavaScript 将自动完成这一切,因此对用户来说看起来很流畅。
原始请求和后续的部分请求都可以由您的 Liquid 标签呈现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.