将{{raw}}变量传递给snippet-Shopify
我创建了一个简单的AJAX请求,该请求将反馈到头模板。但是,我似乎无法执行以下任何操作:将{{raw}}变量传递给snippet-Shopify,shopify,liquid,Shopify,Liquid,我创建了一个简单的AJAX请求,该请求将反馈到头模板。但是,我似乎无法执行以下任何操作:分配,捕获,渲染,包含 <script id="CartPopover" type="text/x-handlebars-template"> {% raw %} {{#items}} {% render "cart-item", item: item %} {{/items}}
分配
,捕获
,渲染
,包含
<script id="CartPopover" type="text/x-handlebars-template">
{% raw %}
{{#items}}
{% render "cart-item", item: item %}
{{/items}}
{% endraw %}
</div>
你误解了Shopify的工作原理。液体代码在页面加载时由Shopify解析一次。Shopify创建了一个巨大的HTML、CSS和JS字符串,并将其转储到浏览器中 一旦进入Javascript领域,就不再使用Liquid了。相反,你在玩数据游戏。因此,如果您想更新购物车,可以使用Javascript。如果您想知道购物车中有什么,可以使用Javascript。如果要重新呈现购物车的内容,可以将不再喜欢的DOM替换为新的DOM。为此使用Javascript模板
除了在渲染期间,JS中的液体量对您没有帮助。在渲染时,您当然可以使用Liquid中的数据构建并填充Javascript数据结构。您误解了Shopify的工作原理。液体代码在页面加载时由Shopify解析一次。Shopify创建了一个巨大的HTML、CSS和JS字符串,并将其转储到浏览器中 一旦进入Javascript领域,就不再使用Liquid了。相反,你在玩数据游戏。因此,如果您想更新购物车,可以使用Javascript。如果您想知道购物车中有什么,可以使用Javascript。如果要重新呈现购物车的内容,可以将不再喜欢的DOM替换为新的DOM。为此使用Javascript模板
除了在渲染期间,JS中的液体量对您没有帮助。在渲染时,您当然可以使用Liquid中的数据构建并填充Javascript数据结构。使用{%raw%}标记来防止Liquid渲染。你能提供更多关于你想要达到的目标的信息吗?@AliceGirard你好,Alice,谢谢你的评论,我已经更新了上面的问题。但基本上,当添加产品时,我正在尝试更新Shopify中的Cart对象。因此,我的逻辑如下:产品成功添加->重新蚀刻购物车->重用购物车项目片段以重新格式化添加回滑出购物车。{%raw%}标记用于防止液体渲染。你能提供更多关于你想要达到的目标的信息吗?@AliceGirard你好,Alice,谢谢你的评论,我已经更新了上面的问题。但基本上,当添加产品时,我正在尝试更新Shopify中的Cart对象。因此,我的逻辑如下:产品成功添加->重新蚀刻购物车->重用购物车项目片段以重新格式化添加回滑出购物车。感谢您帮助理解。因此,我将代码段的HTML复制到javascript模板中。然而,我希望在将来的设计更新中避免这样做,同时也避免使用液态if语句。谢谢你的帮助。因此,我将代码段的HTML复制到javascript模板中。然而,我希望在将来的设计更新中避免这样做,同时也避免使用liquid if语句。
function below.
var showCartNotificationPopup = function (product) {
var addedQuantity = parseInt($('.quantity__input', this.$container).val());
$.get("/cart.json", function (data) {
var cart_items = data.items
$.each(cart_items, function (index, item) {
item.minus_quatinty = item.quantity - 1;
item.formatPrice = Shopify.formatMoney(item.final_price)
})
cart = {
items: data.items
}
$("#side-cart-container").find(".item").detach();
$("#CartOuter table tbody").prepend(template(cart));
console.log(cart);
$("#side-cart-container").addClass("visible");
});
clearTimeout(popoverTimer);
}