如何将javascript变量传递到液体标记?

时间:2015-08-28 04:32:31

标签: javascript variables liquid

我有来自JavaScript的值:

  var customerID = document.getElementById("CustomerID").value;

现在我希望根据该customerID变量查询模块数据中的firstName,lastName。

    {module_data resource="customers" version="v3" fields="id,firstName,lastName,titleType,customerTypeId,ratingTypeId" skip="0" limit="10" order="lastName" collection="selected-data"}  
    {% for item in selected-data.items %}
    {% if item.id == 10393092%}
     document.getElementById("CAT_Custom_15").setAttribute("value","{{item.titleType.label}}") ;
     document.getElementById("CAT_Custom_14").setAttribute("value","{{item.firstName}}");                        
     document.getElementById("CAT_Custom_4").setAttribute("value","{{item.lastName}}");
    {% endif %}
    {% endfor %}

我该如何写出where条件? 我在上面的代码中指定10393092的即时值。它工作正常。但我需要将变量赋值为item.id(如item.id == customerID)。有人可以帮忙吗?非常感谢你

2 个答案:

答案 0 :(得分:1)

你要求的是不可能的。 Liquid生成一个静态页面,然后将其存储在Web服务器上。当用户导航到您的站点时,会将预生成的页面发送给他们。然后它中的JavaScript可以执行。此时,在Liquid中无法做任何事情。您应该寻找纯JavaScript解决方案。

答案 1 :(得分:-1)

不幸的是你做不到。原因是在服务器端处理流动,您将使用

从浏览器DOM获取内容
var customerID = document.getElementById("CustomerID").value;

当页面加载时,来自服务器的内容(对于module_data)已经处理,之后DOM元素将加载,导致没有数据传递到流体if else条件。 目前无法将{j}数据发送到服务器module_data