javascript - 如何为元素提供 V 模型

标签 javascript vue.js

我使用 vue.js 从 JSON 数据动态创建输入字段。我面临的问题是给他们动态 v-model

我在做的是

new Vue({
  el: '#app',
  data() {
    return {
      totalAmt: 500,
      paymentMode: [{
        "PAYMENTCODE": "SW",
        "PAYMENTNAME": "Swiggy"
      }, {
        "PAYMENTCODE": "BB",
        "PAYMENTNAME": "uber Eats"
      }, {
        "PAYMENTCODE": "WE",
        "PAYMENTNAME": "Zomato"
      }]
    }
  },
  computed: {
    balAmt() {
      return 0 - this.totalAmt
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <div>
    <label>Total Amt</label>
    <input type="text" v-model="totalAmt">
  </div>
  <div v-for="mode in paymentMode" :key="mode.PAYMENTCODE" class="form-group col-xs-12 col-sm-12 col-md-4 col-lg-4 col-xl-4">
    <label>{{mode.PAYMENTNAME}}</label>
    <input type="text">
  </div>
  <div>
    <label>Bal Amt</label>
    <input type="text" :value="balAmt">
  </div>
</div>

我想做的是:

两个字段 Total AmtBal Amt 我的总金额有一些值,在 Bal Amt 中,我有相同的总金额值,但就像 - Total Amt=500 然后 Bal-Amt=-500 这是页面加载的时间

现在有一些动态输入字段,这里有三个,所以当我在一个 input field 中键入假设 50 时,就像在 Swiggy 中一样,我想做 500-50Total Amt-字段金额

对于静态字段,我可以很容易地做到这一点,但在这里我有动态字段,我该如何做到这一点。

最佳答案

类似于totalAmt,为每个输入添加一个v-model,并将其设置为"mode.Amount"。然后在 balAmt 中,计算每个输入的总和并从 totalAmt

中减去它

new Vue({
  el: '#app',
  data() {
    return {
      totalAmt: 500,
      paymentMode: [{
        "PAYMENTCODE": "SW",
        "PAYMENTNAME": "Swiggy"
      }, {
        "PAYMENTCODE": "BB",
        "PAYMENTNAME": "uber Eats"
      }, {
        "PAYMENTCODE": "WE",
        "PAYMENTNAME": "Zomato"
      }]
    }
  },
  computed: {
    balAmt() {
      // sum of inputs of paymentMode
      const sum = this.paymentMode.reduce((a, b) => a + (+b.Amount || 0), 0);
      return sum - this.totalAmt;
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <div>
    <label>Total Amt</label>
    <input type="text" v-model="totalAmt">
  </div>
  <div v-for="mode in paymentMode" :key="mode.PAYMENTCODE" class="form-group col-xs-12 col-sm-12 col-md-4 col-lg-4 col-xl-4">
    <label>{{mode.PAYMENTNAME}}</label>
    <input type="text" v-model="mode.Amount">
  </div>
  <div>
    <label>Bal Amt</label>
    <input type="text" :value="balAmt">
  </div>
</div>

关于javascript - 如何为元素提供 V 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59498794/

相关文章:

javascript - AngularJS中如何分割数据?

javascript - 您如何从 SSO 后面的 app/service2 获取在 app/service1 中工作的资源

javascript - 在sqlite中按id查找返回true或false

javascript - Vue.js:观察数组长度

javascript - 如何将 websocket 实例传递给 vue.js 组件,然后对其调用 send() ?

javascript - 在 D3.js 中是否有替代 .append() 的方法?

laravel - 无法使用 Vuetify 和 Laravel 读取未定义的属性 't'

javascript - Laravel-Mix 与 BrowserSync 可处理除 Vue.js 组件之外的所有内容

javascript - Vue.js 向绑定(bind)对象添加属性

asp.net - asp.net 中的高级搜索表单验证