javascript - VueJs 2方式数据绑定(bind)更改丢失

标签 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 的值它做得很完美。然后似乎发生了某种刷新,页面上的所有字段都重置为之前的状态,并且没有更新任何值。

最佳答案

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

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

关于javascript - VueJs 2方式数据绑定(bind)更改丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35995200/

相关文章:

javascript - 为什么 bootstrap float-right 类不适用于我的按钮?

javascript - Panel.Visible=false 不添加到 DOM 中吗?

vue.js - 如何在 Vue2Leaflet 中使用 Leaflet Fullscreen

javascript - 将模态框放置在 Vue.js 的子组件中

vue.js - Element UI NavMenu 与当前路线不同步

javascript - 使用 forRoot 将变量传递给模块

javascript - JQuery——阻止 .html() 值改变

javascript从纪元值中获取小时和分钟

javascript - 在离开过渡处于事件状态时继续渲染组件

vue.js - 如何匹配 vue-router 路由并在组件函数中使用它