从子级向父级发送数据时无法刷新 vue 引导表

Posted

技术标签:

【中文标题】从子级向父级发送数据时无法刷新 vue 引导表【英文标题】:Cannot refresh vue bootstrap table when emitting data from child to parent 【发布时间】:2020-03-16 01:14:41 【问题描述】:

我正在使用 vue-bootstrap https://bootstrap-vue.js.org/docs/components/table/ 并为标题实现了一个插槽,因此我可以在每个包含搜索框的列标题中都有一个显示和隐藏按钮。标头位于插槽中。在字段数据中,我添加了一个布尔值的 showFilter 属性。所以这个想法是它在真假之间切换。现在,当您将数据更改发送给它更新的父级时,这一切都有效。但是,表本身不会更新,直到您触发另一个操作(例如尝试对标题进行排序),然后它才会更新。我已经尝试了上面 url 中提到的强制刷新表数据,但这似乎不起作用,或者我无法弄清楚如何使用它,因为没有示例。

家长

<template>
<b-table
      ref="table"
      :items="filtered"
      :fields="fields"
      sort-icon-left
      responsive="sm"
    >
      <template v-slot:head()="data">
        <TableHeader :data="data" :filters="filters" />
      </template>
    </b-table>
</template>

data() 
  return 
      fields: [
        
          key: "name",
          sortable: true,
          showFilters: true,
        ,
         key: "age", sortable: true, showFilters: true ,
      ],
    


儿童

<template>
  <div>
    <div class="text-info"> data.label.toUpperCase() </div>
    <div>
      <button @click="setUpdate(data.field)">filters</button>
    </div>
    <input
      v-show="data.field.showFilters"
      v-model="filters[data.field.key]"
      :placeholder="data.label"
      @keyup="$emit('update:filters[data.field.key]')"
    />
  </div>
</template>

  methods: 
    setUpdate(field) 
      this._originalField = Object.assign(, field);
      field.showFilters = !field.showFilters;
      this.$root.$emit("update:field.showFilters", "bv::refresh::table");
      console.log(field.showFilters);
    
  

【问题讨论】:

能否包含所有组件功能/数据?过滤器对象在哪里? 【参考方案1】:

我通过使用引导折叠按钮解决了这个问题,并在孩子身上处理这一切,我认为这更有意义!

   <b-collapse :id="'collapse' + data.field.key">
      <b-card>
        <!-- content -->
      </b-card>
    </b-collapse>

【讨论】:

以上是关于从子级向父级发送数据时无法刷新 vue 引导表的主要内容,如果未能解决你的问题,请参考以下文章

iframe 子级向父级发送数据并清除超时

Vue父子组件通信(父级向子级传递数据子级向父级传递数据Vue父子组件存储到data数据的访问)

Vue—子级向父级传递数据

如何在 Bootstrap Vue 中向父级发送模态数据?

如何在不调用事件的情况下将数据从子级发送到父级(vue 2)

通过 npm 脚本生成时从子进程向父进程发送消息