【问题标题】:Two Way Binding Bootstrap-Vue Tables两种方式绑定 Bootstrap-Vue 表
【发布时间】:2020-01-16 15:35:16
【问题描述】:

我正在尝试在bootstrap-vue 表上使用 v-model 使用两种方式的数据绑定。但是表上的值不会随着值的变化而变化。

我尝试使用输入文本更改数据。

<template>
    <b-table striped hover :items="items" :fields="fields" v-model="items"></b-table>

    <span>The Value: {{value}} </span>
    <b-form-input v-model="value"></b-form-input>
</template>

<script>
  export default {
    data() {
      return {
        value = '',
        fields: ['field', 'value',],
        items: [
          { field: 'Field of Value', value: this.value},
        ]
      }
    }
  }
</script>

表单输入中的给定值会更改跨度文本但不会更改b-table 值?

【问题讨论】:

  • 这是因为items数组中第一个对象的value属性初始化为this.value,但是更新this.value并不会自动更新items[0].value字符串。
  • @thibautg 你知道如何工作吗?
  • 使用&lt;b-form-input v-model="items[0].value"&gt;&lt;/b-form-input&gt;
  • 我能问一下你想尝试什么吗?对我来说,如果你只有一个项目,使用一张桌子真的没有意义
  • @Hiws 这不是一个项目,它更像是尝试创建一个带有来自 Web 服务的响应的表,输入的每一次更改都会从一个安静的 Web 服务发出请求并返回一系列数据。我将其设为一项以简化问题。

标签: twitter-bootstrap vue.js vuejs2 vue-component two-way-binding


【解决方案1】:

你应该使用items prop 而不是v-model 指令:

  <b-table striped hover  :fields="fields" :items="items"></b-table>

b-table items 属性是一种绑定方式。

你应该使用 watch 属性来使那个反应:

 export default {
    data() {
      return {
        value : '',
        fields: ['field', 'value',],
        items: [
          { field: 'Field of Value', value: this.value},
        ]
      }
    },
   watch:{
   value(newVal){
   this.items[0].value=this.value;
    this.$set(this.items,0,this.items[0])

    }
  }
  }

【讨论】:

  • 它给出了一个编译错误,因为我使用 :items="items" 两次。
  • 啊,好吧,我通过复制 items 道具犯了一个错误
  • 哦,是的。但不幸的是 也不起作用。它没有任何改变。
  • 感谢您的回答,但是您在哪里调用 value(newVal) 函数?
  • 无需调用,了解更多观察者here
猜你喜欢
  • 2018-08-05
  • 1970-01-01
  • 2016-02-27
  • 2017-09-05
  • 2014-02-13
  • 1970-01-01
  • 1970-01-01
  • 2017-01-03
  • 2018-12-09
相关资源
最近更新 更多