vue.js - 当 v-model 更新时,Bootstrap-vue 输入不会更新文本框中的值

标签 vue.js bootstrap-4 bootstrap-vue

我尝试在用户输入值时创建一个输入,如果它小于 100,则该值应自动增加 125。

我可以使用简单的输入和 vue 的输入事件来完成此工作,但使用 bootstrap-vue 的输入(b-form-input)有时它不起作用。

以下是我的代码

<div id="app">
  <div>
    <b-form-input
      type="number"
      placeholder="For bootstrap-vue"
      v-model="myObj.prop1"
      @input="onProp1Change"/>
  </div>
  <div>
    <input
      type="number"
      placeholder="Simple"
      v-model="myObj.prop2"
      @input="onProp2Change"/>
  </div>
</div>

new Vue({
  el: '#app',
  data() {
    return {
      myObj: {
        prop1: null,
        prop2: null
      }
    };
  },
  methods: {
    onProp1Change(value) {
      console.log('prop1', value);
      if (Number(value) < 1) {
        return;
      }

      if (Number(value) < 100) {
        this.myObj.prop1 = Number(value) + 125;
      }
    },
    onProp2Change(event) {
      let value = event.target.value;
      console.log('prop2', value);
      if (Number(value) < 1) {
        return;
      }

      if (Number(value) < 100) {
        this.myObj.prop2 = Number(value) + 125;
      }
    }
  }
})

jsFiddle link

在 bootstrap-vue 输入中,如果您从输入 5 开始,它会更改为 130,然后如果您按退格键,它会更改为 138,但如果您再次按退格键,它会更改为 13,但它应该保持在 138。 如何制作工作?

最佳答案

它对我有用 $nextTick :

  if (Number(value) < 100) {
    this.$nextTick(() => {
        this.myObj.prop1 = Number(value) + 125;
    });
  }

在新值到来之前,组件可能尚未完成更新。这会等到它完成一个序列。

关于vue.js - 当 v-model 更新时,Bootstrap-vue 输入不会更新文本框中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50154219/

相关文章:

javascript - 当我在 Vue 应用程序中使用 select 标签时,下拉图标消失了。 ( Chrome )

html - 将容器流体固定在固定顶部和固定底部之间

css - Bootstrap 4 "hidden"类不能始终如一地工作

html - 使用 "stacked"属性后表标题行消失

javascript - 使用 Bootstrap Vue 在 Vue JS 上单击选项卡后如何加载组件?

javascript - 在 Vue.js 中使用 $event 或通过 $parent 操作父级上的数据

vue.js - vue 在插入字符串时使用组件

c# - 如何将具有前端 SPA 的 Azure CDN 和具有 .Net Core WebApi 的 Azure WebApp 配置到同一自定义域?

javascript - Bootstrap 4 - 自动 Popover 重新定位如何工作?

javascript - v-on :click not working on button when clicking it's content in bootstrap-vue