gpt4 book ai didi

javascript - 带有 vuex 的 Vue js 使用 v-for 和 v-model 计算属性

转载 作者:数据小太阳 更新时间:2023-10-29 06:10:07 29 4
gpt4 key购买 nike

我需要将 v-for 与 v-model 结合使用。我读了docs并且没有示例说明如何在不在变异处理程序之外执行变异的情况下将它与 v-for 一起使用。

如何在不直接改变属性的情况下在 v-for 中使用 v-model?

  <div v-for="product in products">
<select @change="addItem(product)" v-model="product.quantity">
<option value="">0</option>
<option v-for="n in 10">{{n}}</option>
</select>
</div>

// component

methods : {
...mapMutations({
addToCart: ADD_TO_CART
})
},

最佳答案

不确定我是否完全理解您的问题,但请查看以下内容:

编辑

已更新为使用 Vuex - 但不是通过 v-model,因为那样不会调用所需的突变或操作

const store = new Vuex.Store({
state: {
products: [
{
name: 'foo',
quantity: 0,
},
{
name: 'bar',
quantity: 0,
},
],
},
getters: {
cart (state) {
return state.products.filter((product) => {
return product.quantity > 0
})
},
},
mutations: {
updateQuantity(state, payload) {
state.products[payload.index].quantity = payload.val
},
}
})

new Vue({
el: '#app',
computed: {
products() {
return store.state.products
},
cart() {
return store.getters.cart
},
},
methods: {
addItem (index, val) {
store.commit('updateQuantity', { index, val })
},
}
})
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vuex@next"></script>
<div id="app">
<div v-for="(product, index) in products">
<label>{{ product.name }}</label>
<select @change="addItem(index, $event.target.value)">
<option value="">0</option>
<option v-for="n in 10">{{n}}</option>
</select>
</div>
<h1>cart</h1>
<pre>{{ cart }}</pre>
</div>

关于javascript - 带有 vuex 的 Vue js 使用 v-for 和 v-model 计算属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40913456/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com