Shopify / Cart.js /更新分配和计算的变量?

时间:2016-02-04 20:42:15

标签: ajax shopify cart

尝试动态计算某些值,但卡住了。很想计算税额并显示它们。在cart.js之前,我们分配了一些非常好的临时变量。

毋庸置疑,现在也需要更新。

<div class="grid__item">
    {% assign var_net = cart.total_price | divided_by:1.19 %}   
    {% assign var_tax = cart.total_price | minus: var_net %}   
    <p>
        {{ cart.total_price | money_without_currency }} EUR<br/>
        —<br/>
        {{ var_net | money_without_currency }} EUR<br/>
        {{ var_tax | money_without_currency }} EUR<br/>                
        —<br/>
        {{ cart.total_price | money_without_currency }} EUR
    </p>
</div>

这得出了价格:

<span rv-html="cart.total_price"></span>

但我们如何进行上述计算?

1 个答案:

答案 0 :(得分:1)

首先,您需要确保使用捆绑了Rivets.js的Cart.js版本(它在Cart.js包中显示为for i in range(3): for k,v in dict_1.items(): for x,y in dict_2.items(): if k == x: for j in v: if j in y[i]: print j,x,i )。

您可以使用与Liquid相似的方式在主题模板中使用多个过滤器 - 例如:

rivets-cartjs.min.js

这将使用Liquid呈现初始页面加载的总价格,并保持<div class="grid__item" data-cart-view> <p> <span rv-text="cart.total_price | money_without_currency"> {{ cart.total_price | money_without_currency }} </span> EUR </p> </div> 的文本动态更新。请注意添加<span>属性,该属性告诉Cart.js在购物车更改时动态更新此元素的内容。

动态实施data-cart-viewvar_net会有点棘手。 Cart.js附带了数学过滤器,但只有var_taxplus,他们假设您只使用整数(我只需要opened a ticket来修复下一个版本)

幸运的是,我们可以非常简单地为Cart.js定义自己的格式化程序!在加载minus之后但在调用rivets-cart.min.js之前尝试添加一些这样的代码:

CartJS.init()

完成此操作后,您应该能够在Liquid代码中实现准确的初始渲染,并使用如下模板动态更新:

<script>
  rivets.formatters.var_net = function(price) {
    return price / 1.19;
  }
  rivets.formatters.var_tax = function(price) {
    return price - rivets.formatters.var_net(price);
  }
</script>