在 v-for 输入字段中获取和设置反应值

get and set reactive value within a v-for input field

我有一个 v-for 循环,循环遍历对象的属性,然后呈现属性的键、值和索引,其中一些在输入字段中使用。当用户单击按钮时,该对象会动态填充。但是,我无法通过使用 v-model 指令获取输入字段中的值来更新动态填充的 vue 实例对象中 属性 的值。 如何获取输入字段的值以更新 vue 实例?

            <ul>
                <li v-for="(item, key, index) in itemsObj" v-if="item > 0">
                    {{ index }} - {{ key }} - <input type="number" v-model="item" min="1" max="5"> 
                    <div id="deleteItemID">
                        <button name="deleteItem" @click="deleteItem()" v-bind:value= key>X</button>
                    </div>
                </li>   
            </ul>
<button type="button" name="addToCart" @click="addToCart" id="prod" value="1">Add to Cart</button>

然后在 Vue 实例中

let shoppingCart = new Vue({
            el : '#shoppingApp',
            data : {
                totalItems : 0,
                itemsObj : {}
            }, 
            methods : {
                addToCart : function(){
                    let prodName = event.target.id;
                    let numberOfItems = parseInt(document.getElementById("prod").value);
                    this.updateItemsObj(this.itemsObj, prodName, numberOfItems);
                    this.$forceUpdate();
                },
              deleteItem : function(){
                    let x = event.target.value;
                    console.log(x);
                    this.updateItemsObj(this.itemsObj, x, 0);
                }
           }
})
enter code here

尝试使用 key 访问 item:

{{ index }} - {{ key }} - <input type="number" v-model="itemsObj[key]" min="1" max="5"> 

此外,请记住,动态添加属性时必须使用 Vue.set

您可以处理输入元素上的 input 事件并将密钥传递给处理程序

<input type="number" :value="item" @input="onChange($event, key)" min="1" max="5"> 

并且在处理程序中,您可以进行更新

onChange(event, key) {
  this.itemsObj[key] = event.target.value;
}