【发布时间】:2020-10-20 21:17:59
【问题描述】:
我有一个这样定义的自制液体标签:
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 调用触发。我无法控制模板中块内的内容。
我有个主意:
- 当标签被渲染时,我也在 dom 中以 JSON 格式输出它的
nodelist - 然后,我在某处添加一个 Ajax 调用,该调用将调用一个控制器。在这个调用中,我传输标签原始节点列表
- 在我的控制器中,我实例化了一个上下文,并以某种方式将节点列表传输到我的标签并使用一些新参数重新渲染它
- 我终于在 dom 中重新渲染了
不确定这是否是正确的方法。我觉得我一定不是唯一一个试图实现这一目标的人,也许存在更好的解决方案。无论如何,我仍然无法在实例化后将序列化的节点列表 JSON 加载到标签中......
【问题讨论】:
标签: javascript ruby shopify liquid