我想将v-model绑定到值数组
所以我有
paymenttypes:[
{label:'cheque', value:1},
{label:'two', value:2}
]
pays:[],
created(){
this.paymentmethods.forEach((value) => {
this.pays.push({id:value.value, ref: '' , val: 0 })
});
}
现在在模板上
<div class="row saleTotal" v-for="(key, extrafieldsDetails) in paymentmethods">
<div class="col-sm-4">
<h5>{{extrafieldsDetails.label}}</h5>
</div>
<div class="col-sm-4">
<input type="number" min="0" class="text-right form-control" v-model="pays[key].ref">
</div>
</div>
但是我收到了错误
cannot read property 'ref' of undefined
可能有什么不对?因为pays数组有一个带有ref键的对象。我哪里错了?
答案 0 :(得分:1)
我假设您的变量paymenttypes
和paymentmethods
是相同的。
如果是这样,您的v-for
绑定不正确。您没有从paymentmethods
中获取键值对,因为它是一个数组,不是一个对象。
因此,您的v-for
可以写为v-for="(item, index) in paymentmethods"
,其中item
是来自paymentmethods
的数组项,index
是item
的索引在paymentmethods
。
然后您需要按如下方式替换属性访问器:
{{item.label}}
代替{{extrafieldsDetails.label}}
pays[index].ref
代替pays[key].ref
var app = new Vue({
el: "#app",
data: {
paymentmethods:[
{label:'cheque', value:1},
{label:'two', value:2}
],
pays:[]
},
created(){
this.paymentmethods.forEach((value) => {
this.pays.push({id:value.value, ref: '' , val: 0 })
});
console.log(this.pays);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.3/vue.min.js"></script>
<div id="app">
<div class="row saleTotal" v-for="(item, index) in paymentmethods">
<div class="col-sm-4">
<h5>{{item.label}}</h5>
</div>
<div class="col-sm-4">
<input type="number" min="0" class="text-right form-control" v-model="pays[index].ref">
</div>
</div>
</div>