【问题标题】:BoostrapVue: modify table to show items as inputsBootstrap Vue:修改表以将项目显示为输入
【发布时间】:2021-07-19 04:42:07
【问题描述】:

如何修改以下代码以使项目成为用户必须输入的输入? 我希望能够有一个输入字段,而不是列出项目。

<template>
  <div>
    <b-table striped hover :items="items" :fields="fields"></b-table>
  </div>
</template>
    
<script>
export default {
  data() {
    return {
      // Note `isActive` is left out and will not appear in the rendered table
      fields: ['first_name', 'last_name', 'age'],
      items: [
        { isActive: true, age: 40, first_name: 'Dickerson', last_name: 'Macdonald' },
        { isActive: false, age: 21, first_name: 'Larsen', last_name: 'Shaw' },
        { isActive: false, age: 89, first_name: 'Geneva', last_name: 'Wilson' },
        { isActive: true, age: 38, first_name: 'Jami', last_name: 'Carney' }
      ]
    }
  }
}
</script>

【问题讨论】:

  • 对表格不太熟悉,但是看看文档你可以试试插槽。虽然......文档中有警告Avoid manipulating record data in place, as changes to the underlying items data will cause either the row or entire table to be re-rendered

标签: javascript vue.js bootstrap-vue


【解决方案1】:

你也可以使用v-slot:cell():

new Vue({
  el: "#app",
  data() {
    return {
      fields: ['index', 'first_name', 'last_name', 'age'],
      items: [
        { isActive: true, age: 40, first_name: 'Dickerson', last_name: 'Macdonald' },
        { isActive: false, age: 21, first_name: 'Larsen', last_name: 'Shaw' },
        { isActive: false, age: 89, first_name: 'Geneva', last_name: 'Wilson' },
        { isActive: true, age: 38, first_name: 'Jami', last_name: 'Carney' }
      ]
    }
  }
})
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/bootstrap-vue/2.18.1/bootstrap-vue.min.css" />
<script src="https://unpkg.com/vue@2.6.12/dist/vue.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-vue/2.18.1/bootstrap-vue.min.js"></script>

<div id="app">
  <b-table striped hover :items="items" :fields="fields">
    <template v-slot:cell(index)="{ index }">
      {{ index + 1 }}
    </template>
    <template v-slot:cell()="{ item, field: { key }}">
      <b-form-input v-model="item[key]" />
    </template>
  </b-table>
</div>

【讨论】:

  • 感谢 Majed。如果我想添加一个索引列.. 第一行等于 1,第二行等于 2,依此类推?
  • 不客气,一种方法是执行上述操作
猜你喜欢
  • 2021-01-12
  • 1970-01-01
  • 2020-09-05
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
  • 1970-01-01
  • 2020-07-12
  • 2018-03-04
相关资源
最近更新 更多