javascript - 从 Vuejs 中动态创建的数组中的对象中检索值

标签 javascript vue.js

我正在使用 vue 和 django 构建一个购物应用程序,并使用 axios 通过 api 获取 .js 文件中的库存产品。

我从数据库获取数据的 .js 文件:

  delimiters: ['[[', ']]'],
  data: {
    inventory: [],
    merchants: [],
    cart: [],
  },
  ...,
  mounted: function  (){
    axios
      .get("http://127.0.0.1:8000/get_products/").then(response => {
        (this.inventory = response.data)
        return axios.get("http://127.0.0.1:8000/get_merchants/")
      })
      .then(response => {
        (this.merchants = response.data)
      })
  },

我能够使用以下 html 在我的模板中成功显示结果:

<div class="main_block">
  <div class="products" v-for="product in inventory">
    <div class="mini_block info_block">
      <div class="left merch_img_holder"></div>
      <h1 class="left info">[[ product.fields.merchant ]]</h1>
      <div class="clear"></div>
    </div>
    <div class="product_image">
      <img v-bind:src="/media/+[[ product.fields.image ]]" width="420" alt="Image">
    </div>
    <div class="mini_block info_block">
      <div class="left info">
        <div class="">[[ product.fields.name ]]</div>
        <div class="">[[ product.fields.price ]]</div>
      </div>
      <div class="right info">
        <i class="fas fa-caret-square-down" @click="deleteFromCart([[ product ]])"></i>
        <i class="fas fa-caret-square-up" @click="addToCart([[ product ]])"></i>
      </div>
      <div class="clear"></div>
    </div>
  </div>
</div>

我正在尝试使用 <i class="fas fa-caret-square-up" @click="addToCart()"></i> 将商品添加到我的购物车(靠近我的 html 底部)。我的 addToCart() 函数如下所示:

addToCart(product){
  this.cart.push(product)
},

这实际上更新了购物车 - 我知道这一点是因为我有一个返回 this.cart.length 的计算属性每当我点击“添加到购物车”时。

我需要显示购物车中的商品(在我的购物车 View 中)。我正在尝试使用以下 html 来执行此操作:

<div v-for="(item, index) in cart" class="cart_item">
  <div class="cart_img_holder">
    <img v-bind:src="/media/+[[ item.image ]]" width="80" alt="Image">
  </div>
  <ul class="cart_item_detail">
    <h3>[[ item.name ]]</h3>
    <li>[[ item.price ]]</li>
    <li>[[ item.merchant ]]</li>
    <li>Qty: [[ item.qty ]] | <a @click="removeFromCart(index)">Delete</a></li>
  </ul>
</div>

问题是它要么向购物车添加空物体,要么我无法检索这些元素。将购物车项目记录到控制台会产生未定义的结果。如何显示购物车中的元素?

最佳答案

您没有在 addToCart 方法中传递任何值。这就是为什么始终未定义被插入购物车数组的原因。

关于javascript - 从 Vuejs 中动态创建的数组中的对象中检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59827837/

相关文章:

Javascript MDN函数原型(prototype)绑定(bind)polyfill在数组中是可枚举的

javascript - 使用 ajax/jsonp 添加轴的 Rickshaw.js 图表

javascript - 相同的功能,不同的时间行为

javascript - 在 Vuex 中存储敏感数据

javascript - 如何使用 PrimeVue i18n 集成?

javascript - Jquery .toggle 替换代码

javascript - Moment js日期时间比较

javascript - 使用 vue 在组件中编写 javascript 代码

node.js - 无法在 post 请求中发送对象

vue.js - "": expected 1 selector or at-rule, 之后的无效 CSS 是 "{"