【问题标题】:Display data in Vue.js with v-for使用 v-for 在 Vue.js 中显示数据
【发布时间】:2016-11-16 02:13:18
【问题描述】:

我正在使用 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>

我做错了什么?

【问题讨论】:

  • 小胡子前的@有什么作用?
  • @gurghet 告诉 Blade(laravel 模板引擎)忽略它,否则它基本上会将其视为 PHP 回显。

标签: javascript vue.js vue-resource


【解决方案1】:

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

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

同时编辑

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

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

【讨论】:

  • 恐怕运气不好
  • 不使用 this.$set 已弃用,我编辑了我的答案
  • 在这里工作:jsfiddle.net/gurghet/dL2m248z/1 basketItems 变量包含什么?你确定不需要显示basketItems.data吗?
  • 控制器返回数据的方式一定有问题。从问题中可以看出,实际数据包含在集合中或带有奇怪随机字符串的东西中。
  • 好吧,你不能指望 Vue 会神奇地猜测一个随机字符串。您应该使用以下内容访问它:Object.keys(basketItems.something)[0]。您应该使用 basketItems 变量的内容更新您的问题
猜你喜欢
  • 2020-11-29
  • 2018-06-04
  • 2021-09-26
  • 1970-01-01
  • 2021-07-06
  • 2018-01-21
  • 2020-04-09
  • 2018-01-09
  • 1970-01-01
相关资源
最近更新 更多