为了账号安全,请及时绑定邮箱和手机立即绑定

直接在购物车中编辑和保存Shopify订单项属性

直接在购物车中编辑和保存Shopify订单项属性

BIG阳 2021-05-14 14:12:52
我想直接使用购物车中的Shopify订单项属性进行编辑/保存,/cart/change.js而不必回到产品页面重新输入信息。订单项属性由名称/值组成。每个购物车项目最多具有3个订单项属性名称(“场合”,“其他注释”,“封闭卡”),它们各自的对应值是唯一的。我似乎无法使它与多个购物车商品或多个属性名称/值一起使用。由于每个属性值ID都是属性值本身,因此我尝试为每个值创建动态ID,以便可以唯一地定位每个购物车商品属性并覆盖现有值。但是,我似乎无法弄清楚该如何做。出于示例目的,为了进行编辑,property-name我想执行以下操作:$('.cart-line-item-update').on('click', function() {  const $this = $(this);  const dataIndex = $this.data('index');  const item = cart_items[dataIndex - 1];  item.properties['property-name'] = $('#dynamic-property-value').val();  jQuery.ajax({    url: '/cart/change.js',    dataType: 'json',    data: {      line: dataIndex,      properties: item.properties    }  }).done(function() {    window.location.reload()  })});<script>    var cart_items = {{cart.items | json}} </script>{% if property_size > 0 %}  {% assign loop_index = forloop.index %}  {% for p in item.properties %}    {% assign first_character_in_key = p.first | truncate: 1, '' %}    {% unless p.last == blank or first_character_in_key == '_' %}      <div class="accordion-container collapse-all cart-line-item-accordion">        <input type="checkbox" title="Expand for more information" checked>        <h2 class="accordion-title">          <span id="{{ item.product_id }}-{{ p.first | handleize }}">{{ p.first }}:</span>          <i class="accordion-icon"></i>        </h2>        <div class="accordion-content">          <div class="saved-textarea visible">            {{ p.last }}          </div>          <textarea id="{{ item.product_id }}-{{ p.first | handleize }}-textarea" class="update-textarea autosize new-property">{{ p.last }}</textarea>预期的结果:每个购物车商品属性值将被保存(覆盖现有的json值)。实际结果:只会更新第一个购物车商品属性值并保存。如果购物车中有多个项目,每个项目都有自己的值,它将不会保存该属性的后续实例,而将第一个实例覆盖它们。这些值已经存在于json中,因为它们是在产品页面上创建并转移到购物车的。我只是不知道如何针对每个旧的json值以新的值覆盖它。该脚本似乎将属性名的所有实例作为目标,并用第一个值覆盖所有实例。也许我缺少明显的东西。谁能帮忙吗?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 195 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信