如果这是其他地方的道歉,但我无法找到更好的方法。
我想在添加,删除产品或更改数量时随时使用AJAX更新购物车总数。
我有它的工作,但必须有一个更好的方法。不断调查变化是不对的,我当然不希望最终导致内存泄漏。
现在我从JSON获取项目计数,然后通过每秒轮询更改div中的数字,让用户觉得数字在更改时会更新。
我尝试在添加到购物车按钮(工作)中添加一个监听器以及监听数量选择器(不工作)。
我确定我只是一个菜鸟,所以任何帮助都会受到赞赏。代码如下:
// Fetch the cart in JSON and change cart quantity on the fly after first product added to cart
function doPoll(){
setTimeout(function() {
$.getJSON('/cart.js', function(cart) {
$('.cart-count').html(cart.item_count);
doPoll();
}, 1000);
}
所以修复其实非常简单。我无法在购物车中的特定元素上附加听众的原因是购物车尚未通过ajax加载(呃!)
所以我所做的只是移除常量轮询,而是在页面上的ajax满载的任何时候运行我的函数:
$( document ).ajaxComplete(function() {
//Do stuff here
});
答案 0 :(得分:1)
实际上它更简单。如果ajax驱动的推车调整发生Timber给你一个可覆盖的钩子。只需覆盖ShopifyAPI.onCartUpdate
即可e.g。
ShopifyAPI.onCartUpdate = function(cart){
//do something new with the cart contents
$('.cart-count').html(cart.item_count);
};
除了您的购物车数量也可通过液体在页面加载时使用,因此如果您将两者合并在一起,您将被覆盖:
<div class="cart-count">{{ cart.item_count }}</div>
答案 1 :(得分:0)
如果您尚未实施任何其他方式添加到购物车,则非常简单。
如果查看您提到的AJAX函数文件,尤其是第101行和第113行的函数,您可以看到这些函数与购物车更新有关。在$('.cart-count').html(cart.item_count);
之前添加您的代码callback(cart);
,您就可以了。