window.aftersell.cart.actions 下。
操作要在购物车就绪后运行,即在
ready() 或事件处理函数内部。**在购物车加载之前,操作是桩函数。**每个操作会在控制台输出一条指明操作名称的警告,例如
cart.actions.addItem() called before the cart loaded,然后不做任何事。异步操作仍会 resolve 一个 Promise,所以 .then() 链会正常运行而不是抛出错误;getCart() 返回 null,formatMoney() 返回空字符串。过早调用不会破坏任何东西,但也不会发生任何事。当某个操作看似没有效果时,请留意控制台中的这条警告。所有操作
抽屉
open 和 close
读取
getCart()
null。结果是一个副本,所以修改它不会更改真实的购物车。
getCart() 是多余的。
formatMoney(cents)
configure({ money_format }) 覆盖格式。
更改购物车
商品操作通过 Shopify 的
key 而不是变体 ID 来标识行,因为购物车可以在多个带有不同属性的行中持有同一个变体。从 getCart().items[n].key 读取它。addItem(variantId, quantity?)
quantity 默认为 1。在购物车稳定后 resolve。
removeItem(key)
updateItemQuantity(key, quantity)
0 会移除该行。
cart_updated 中运行,因为 > 1 检查在第二次执行时为 false。参阅两条规则。
replaceLineVariant(key, variantId)
key 并落在购物车末尾。之后请重新读取 getCart(),而不要重用你传入的 key。
刷新
refresh()
visualRefresh()
注意事项和边界情况
- **异步操作在变更稳定后 resolve。**等待一个操作可以让你在购物车确实更新后再安排后续工作。
- **
getCart()返回副本。**修改它对真实购物车没有任何影响。 - **没有折扣码操作。**已应用的折扣码可以在购物车上读取(
discountCodes、totalDiscount)以及按行读取(discountAllocations);购物者通过折扣码区块应用它们。 - **没有购物车属性或备注操作。**属性可以在购物车对象上读取;购物者通过备注区块编写备注。
- 要隐藏一行而不是移除它,请使用
registerLineTransform。移除会改变购物者的总额;隐藏不会。