window.aftersell.cart.actions.
Actions laufen, nachdem der Warenkorb bereit ist — innerhalb von
ready() oder eines Event-Handlers.Bevor der Warenkorb lädt, sind Actions Stubs. Jede protokolliert eine Konsolenwarnung mit dem Namen der Action, zum Beispiel
cart.actions.addItem() called before the cart loaded, und tut nichts. Die asynchronen Actions lösen trotzdem ein Promise auf, sodass eine .then()-Kette normal läuft, statt zu werfen; getCart() gibt null zurück und formatMoney() einen leeren String.Nichts geht kaputt, wenn du eine zu früh aufrufst, aber es passiert auch nichts. Achte auf diese Warnung in der Konsole, wenn eine Action scheinbar nichts tut.Jede Action
Drawer
open und close
Lesen
getCart()
null, bevor es geladen wurde. Das Ergebnis ist eine Kopie, das Mutieren ändert also nicht den echten Warenkorb.
getCart() also redundant.
formatMoney(cents)
configure({ money_format }).
Den Warenkorb ändern
Die Item-Actions identifizieren eine Zeile über ihren Shopify-
key, nicht über die Varianten-ID, weil ein Warenkorb dieselbe Variante in mehreren Zeilen mit unterschiedlichen Properties enthalten kann. Lies ihn aus getCart().items[n].key.addItem(variantId, quantity?)
quantity ist standardmäßig 1. Wird aufgelöst, sobald sich der Warenkorb eingependelt hat.
removeItem(key)
updateItemQuantity(key, quantity)
0 entfernt die Zeile.
cart_updated laufen, weil die > 1-Prüfung beim zweiten Durchlauf false ist. Siehe die zwei Regeln.
replaceLineVariant(key, variantId)
key und landet am Ende des Warenkorbs. Lies getCart() danach neu, statt den übergebenen Key wiederzuverwenden.
Aktualisieren
refresh()
visualRefresh()
Hinweise und Randfälle
- Asynchrone Actions werden aufgelöst, wenn die Änderung abgeschlossen ist. Eine abzuwarten lässt dich Arbeit sequenzieren, nachdem der Warenkorb sich tatsächlich aktualisiert hat.
getCart()gibt eine Kopie zurück. Sie zu mutieren tut dem echten Warenkorb nichts.- Es gibt keine Action für Rabattcodes. Angewendete Codes sind auf dem Warenkorb (
discountCodes,totalDiscount) und pro Zeile (discountAllocations) lesbar; Käufer wenden sie über den Discount code-Block an. - Es gibt keine Action für Warenkorb-Attribute oder Notizen. Attribute sind auf dem Cart-Objekt lesbar; Käufer schreiben Notizen über den Notes-Block.
- Um eine Zeile auszublenden statt zu entfernen, verwende
registerLineTransform. Entfernen ändert die Gesamtsumme des Käufers; Ausblenden nicht.
Nächste Schritte
- Cart-Objekt: was
getCart()zurückgibt. - Events: wann du diese Actions ausführen solltest.
- Hooks: ändere, wie eine Zeile gerendert wird, statt den Warenkorb zu ändern.
- Use Cases: vollständige Lösungen für häufige Anforderungen.