Vuejs2 基于其他输入字段更新值

Vuejs2 基于其他输入字段更新值,vuejs2,vue-component,vuex,Vuejs2,Vue Component,Vuex,我创建了一个组件,用于创建带有发票项输入字段的动态行 <template> <tr> <td class="p-0" align="center"><label class="m-0">{{ row.id + 1 }}</label></td> <td class="p-0" align="center"> <input type="text"

我创建了一个组件,用于创建带有发票项输入字段的动态行

<template>
    <tr>
        <td class="p-0" align="center"><label class="m-0">{{ row.id + 1 }}</label></td>
        <td class="p-0" align="center">
            <input type="text" v-model="row.name" name="product_name[]" value="" class="form-control form-control-sm border-0" placeholder="Product Name ...">
        </td>
        <td class="p-0" align="center">
            <input type="text" v-model="row.hsn" name="product_hsn[]" value="" class="form-control form-control-sm border-0" placeholder="900574">
        </td>
        <td class="p-0" align="center">
            <input type="number" v-model="row.qty" name="product_qty[]" value="1" class="form-control form-control-sm border-0" placeholder="0">
        </td>
        <td class="p-0">
            <input type="number" v-model="row.rate" name="product_rate[]" value="" class="form-control form-control-sm border-0" placeholder="0.00">
        </td>
        <td class="p-0">
            <input type="number" v-model="row.amount" name="product_amount[]" readonly="readonly" v-bind:value="row.qty * row.rate" class="form-control form-control-sm border-0" placeholder="0.00">
        </td>
    </tr>
</template>
<script>
export default {
    props: ['row'],
    data() {
        return {
            slabs: [0, 0.25, 3, 5, 12, 18, 28],
        }
    },

    mounted() {}
}
</script>
App.js

....
computed: {
    invoiceRows() {
        return this.$store.state.items
    }
},
这是我的vuex,它管理所有共享状态:

export const store = new Vuex.Store({
    state: {
        activeType: null,
        stateList: [],
        companyState: [],
        items: [{
            id: 0, name: null, hsn: null, qty: 1, rate: null, discount: 0,
            taxSlab: 0, cessRate: null, cessAmount: null
        }],
        billToSupplyState: [],
        shipToSupplyState: []
    },
    actions,
    mutations
})

但是如果我从我的组件中删除
v-model=“row.amount”
,它就会工作。有谁能帮我一下,让我知道我错过了什么吗?

可能是因为您的
项目:[{…rate:null}]
因此无法计算您的
行的金额。还有一件事。您通常不应该使用道具传递的值作为您的v模型。@MatWaligora,带有
项:[{…rate:null}]
是可以的,因为如果我删除
v-model=“row.amount”
则一切正常。我需要这个
row.amount
用于其他计算好吧,我知道怎么了,
v-model=“row.amount”
接管
v-bind:value=“row.qty*row.rate”
这就是为什么它只显示你的
行.amount
而不计算你的
:value
。尝试使用监视程序或计算属性更新
行.金额
上的
行.费率
/
行.数量
更改。祝你好运:)
export const store = new Vuex.Store({
    state: {
        activeType: null,
        stateList: [],
        companyState: [],
        items: [{
            id: 0, name: null, hsn: null, qty: 1, rate: null, discount: 0,
            taxSlab: 0, cessRate: null, cessAmount: null
        }],
        billToSupplyState: [],
        shipToSupplyState: []
    },
    actions,
    mutations
})