VueJs 2路数据绑定更改丢失

时间:2016-03-14 18:26:20

标签: javascript vue.js

我有一个产品清单: enter image description here

对于每种产品,他们可以选择时间类型(每小时,每天等)。 当他们这样做并点击了书籍时,它会将产品添加到购物车中;

这是在下面的addToCart内部以粗体显示的。

 addToCart: function (resultId, cartId) {

                var that = this;

                 this.shoppingCart.forEach(function (cartItem, cartIndex) {

                     cartItem.added = false;

                     if (cartIndex == cartId)
                     {
                         cartItem.added = true;

                         that.results.forEach(function (resultItem, resultIndex) {

                             if (resultItem.id == resultId) {

                                 that.shoppingCart.$set(cartIndex,
                                             {
                                                 productTimeType: cartItem.productTimeType,
                                                 quantity  : cartItem.quantity                                                   
                                             });

                                     var numberOfBookings = (parseInt(resultItem.numberBookings, 10) + cartItem.quantity);

                                     that.results.$set(resultIndex, {
                                            numberBookings: numberOfBookings,
                                            name: resultItem.name,
                                            quantity: resultItem.quantity,
                                            id: resultItem.id,
                                            category_id: resultItem.category_id,
                                            description: resultItem.description,
                                            image: resultItem.image,
                                            created_at: resultItem.created_at,
                                            updated_at: resultItem.updated_at
                                     });

html:

 <tr v-for="result in results">
    <td>
       <form class="form-inline" @submit.prevent='addToCart(result.id, $index)'>
          <input v-model="shoppingCart[$index].quantity" class="form-control" placeholder="Quantity" name="quantity" type="text">
          <select v-model="shoppingCart[$index].productTimeType" class="form-control input-lg"><option value="" selected="selected">All types</option><option value="1">Whole day</option><option value="2">Half day</option><option value="3">Per hour</option></select>
          <input class="btn btn-warning" type="submit" value="add to cart">
       </form>

当我调试它时,和console.log完成它所做的值。然后似乎发生了某种刷新,并且所有字段都在页面上重置为之前的状态,并且没有值更新。

2 个答案:

答案 0 :(得分:1)

将输入的类型更改为按钮而不是提交

<input class="btn btn-warning" type="button" value="add to cart">

答案 1 :(得分:0)

好吧,在我的情况下,问题在于我使用Laravel Collective's package输出Laravel的选择框,每次执行此操作时,都会生成带有选定某个选项的标记。这正在重置下拉列表。

似乎有更好的方法可以使用VueJs和后端,例如从服务器获取数据或html并将其传递给VueJs以生成下拉列表(如果下拉列表是动态的)。我将遵循similar to this方法。