1

我正在使用 Laravel 和 Vue.js 制作一个简单的购物车系统。我可以成功地将项目添加到我的购物篮并将它们检索到某个点,但是我在将项目实际输出到视图时遇到了麻烦。

当我到达我的购物篮路线时,我加载了触发以下 Vue 代码的购物篮视图:

new Vue({
  el: '#basket',
  ready: function () {
    this.fetchBasket();
  },
  methods: {
    fetchBasket: function(){
      this.$http.get('api/buy/fetchBasket', function (basketItems) {
        this.$set('basketItems', basketItems);
      });
    }
  }
});

这有效,我在控制台中返回数据:

{027c91341fd5cf4d2579b49c4b6a90da: 
{id: 1, name: "A Gnarly Tree", price: 15, quantity: 2}}
  027c91341fd5cf4d2579b49c4b6a90da:
  {id: 1, name: "A Gnarly Tree", price: 15, quantity: 2}
    id:1
    name:"A Gnarly Tree"
    price:15
    quantity:2

但是,视图本身中不会出现任何内容。我正在尝试用来v-for填充表格:

<tbody>
    <tr v-for="item in basketItems">
        <td>@{{ item.name }}</td>
        <td>@{{ item.price }}</td>
        <td>@{{ item.quantity }}</td>
        <td>@<button class="btn btn-primary">Update</button></td>
    </tr>
</tbody>

我究竟做错了什么?

4

1 回答 1

1

您没有在 vue 实例的数据中初始化 basketItems。尝试添加:

...
el: '#basket',
data: { basketItems: [] }, // <-- this line
ready: function(){
  this.fetchBasket();
},
...

还编辑

this.$set('basketItems', basketItems);

Vue.set(this, 'basketItems', basketItems)

于 2016-07-13T13:24:37.290 回答