laravel - 显示每个 b 表行的模式的按钮

标签 laravel vue.js bootstrap-vue

我使用 laravel、vue 和 bootstrap-vue。

我创建了一个显示元素表(本例中为子网)的 vue 组件。

对于它们中的每一个,我都展示了一个组件(modal_edit-subnet),它应该打开一个允许编辑相关行元素数据的模式。

问题是它显示了所有表格元素的模式。例如,如果表格有 3 行,则显示 3 个模态(关闭一个后显示下一个)。每个模态与每一行的数据。
我试图添加“key”但没有成功。

我究竟做错了什么?

谢谢!

显示表格的组件

<template>
    <div>
        <b-card class="text-center">            
            <b-table small striped hover :items="data_subnets" :fields="fields" :tbody-tr-class="rowClass">
                <template slot="[ip_address]" slot-scope="data_subnets">
                    <b>{{ long2ip(data_subnets.item.ip_address) }}</b>
                </template>
                <template slot="[actions]" slot-scope="data_subnets">
v-on:deleteSubnet="deleteSubnet"></modal_delete-subnet>
                    <modal_edit-subnet :key="'modal_edit_subnet' + data_subnets.item.id" :subnet="data_subnets.item" v-on:editSubnet="editSubnet"></modal_edit-subnet>
                </template>
            </b-table>
        </b-card>
    </div>
</template>

模态modal_edit-subnet

<template>
  <div>
    <b-button size="sm" v-b-modal.modal-edit-subnet>Edit</b-button>

    <b-modal
      id="modal-edit-subnet"
      ref="modal"
      title="Edit subnet"      
      @ok="handleOk"
    >    
    This is subnet {{data_subnet.id}} 
    </b-modal>
  </div>
</template>

最佳答案

问题是:

  • 您正在为表格的每一行渲染一个模式,并且;
  • 阅读文档,模态似乎是由 id 触发的,并且您的 b-modal id 不是动态的,具体取决于行。

  • 如何修复它:
  • b-table 上仅使用一种模式级别
  • 将 id 动态注入(inject)您的 modal_edit-subnet组件:
  • <template>
      <div>
        <b-button size="sm" v-b-modal[id]>Edit</b-button>
    
        <b-modal
          :id="id"
          ref="modal"
          title="Edit subnet"      
          @ok="handleOk"
        >    
        This is subnet {{data_subnet.id}} 
        </b-modal>
      </div>
    </template>
    
    <script>
    export default {
        props: {
            id: {
                type: String | Number
            }
        }
    }
    </script>
    
  • 使用 v-model(我会这样做)
  • <template>
      <div>
        <b-button size="sm" @click="show = true">Edit</b-button>
    
        <b-modal
          v-model="show"
          ref="modal"
          title="Edit subnet"      
          @ok="handleOk"
        >    
        This is subnet {{data_subnet.id}} 
        </b-modal>
      </div>
    </template>
    
    <script>
    export default {
        data() {
            return {
                show: false
            }
        }
    }
    </script>
    

    关于laravel - 显示每个 b 表行的模式的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57582098/

    相关文章:

    php - 在 laravel blade 中创建类似简码的 Wordpress

    laravel - 我应该将 manifest.json 放在 Laravel 5.3 项目中的哪里?

    php - Laravel 4 - 获取通过关系连接的表的交叉结果

    css - 绑定(bind) Vuetify 数据表的样式,以便排序箭头始终与标题位于同一行 - 而不是在下方?

    javascript - 在js脚本中创建同一组件的多个vue元素

    css - 如何将 bootstrap-vue 图标包含到 nuxtjs 中?导航栏向下箭头的问题

    javascript - 如何在 Vue.js 中的方法内触发输入焦点事件?

    php - Laravel:传递默认变量以查看

    javascript - 在 Vuejs 中将动态参数传递给 api 调用的正确方法是什么?

    vuejs2 - Vue 和 Bootstrap : How to show different components based on media breakpoint? 最新共识是什么?