当前位置: 首页 > 知识库问答 >
问题:

Vue和引导Vue-动态使用插槽

应嘉容
2023-03-14

我试图在bootstrap-vue表中创建一个插槽,用自定义组件呈现任何布尔值。

所以我有一张简单的桌子

<b-table :items="items" :fields="columns" >

</b-table>

现在,如果我想以特定的方式呈现单个列,我必须使用插槽

<template v-slot:cell(active)="data" >
    <my-component :item="data.item" />
</template>

它是有效的,因为我知道active是一个布尔值。

我想概括这种行为,但我不能在模板中使用v-for,也不能在模板上使用v槽:cell(active)...这个想法是创建一个包含我所有布尔字段的数组并迭代它...

像这样的

<template v-slot:cell(b)="data" v-for="b in booleanFields">
    <my-component :item="data.item[b]" />
</template>

共有1个答案

龙霖
2023-03-14

因为Vue支持动态槽名,所以您可以使用变量来设置槽名,使用v-bind:[属性名称]="value"语法。

这样你可以做一些事情,比如:

<template v-slot:['cell(' + b + ')']="data" v-for="b in booleanFields">

但是由于动态参数表达式的限制,使用引号是不可能的。因此,您必须创建一个助手方法来进行连接。因此:

<template v-slot:[gomycell(b)]="data" v-for="b in booleanFields">

methods: {
  gomycell(key) {
    return `cell(${key})`; // simple string interpolation
  }

自然,您可以将方法gomycell命名为cell,并将其使用为v-插槽:[cell(b)]="data"(请注意[]s),但我留下了名称gomycell>所以在这个例子中,更清楚的是什么是方法的名称,什么不是。

下面是一个演示动态插槽名称用法的小演示,它不是b-table,但我认为它足以说明它是可能的:

Vue.component('my-table', {
  template: '#my-table',
})

new Vue({
  el: '#app',
  data: {
    booleanFields: [true, false]
  },
  methods: {
    gomycell(key) {
      return `cell(${key})`;
    }
  }
})
<script src="https://unpkg.com/vue"></script>

<div id="app">
  <my-table>
    <template v-slot:[gomycell(b)]="data" v-for="b in booleanFields">
      <h3>who? {{ data.is }}</h3>
    </template>
  </my-table>
</div>

<template id="my-table">
  <div>
    <div style="color:green"><slot name="cell(true)" v-bind="{is: 'true!'}"></slot></div>
    <div style="color:red"><slot name="cell(false)" v-bind="{is: 'false!'}"></slot></div>
  </div>
</template>
 类似资料:
  • 尝试从这个Axios调用中获取超文本标记语言,以在b选项卡中呈现。运气不好。除了那里,它在任何地方都有效。对Vue来说还是很新鲜的,有点困惑我在这里错过了什么。我觉得编译在这里可能很有用,但也可能是过度的。 HTML: Vue:

  • 目前正在使用引导vue。我需要生成,但是使用从api获得的动态头值,我不确定如何执行此操作。 我已经尝试了在数据中设置字段的常规方法,但若我尝试设置计算字段,我的表中并没有得到任何值` ` 是从包含如下数组的api接收的数据。此外,此阵列还可以添加更多次(来自api的数据)` ` 预期的结果是,我从api中获得了带有时间的列标题,并添加了日期列。 我可以使用时刻生成一系列的日期,但不确定如何将此映

  • 1. 前言 本小节我们将介绍如何使用插槽slot,包括默认插槽、具名插槽、作用域插槽。插槽可以使组件的模版变得多样性,让用户在使用组件时可以自定义传入模版内容。在复杂组件中,当我们在使用多个插槽的时候将会是一个难点。但是也不必担心,只要我们将每个插槽类型的使用方法学透,相信面对任何复杂插槽的使用的时候都可以游刃有余。 2. 慕课解释 Vue 实现了一套内容分发的 API,将 元素作为承载分发内容的

  • 当我尝试使用下面的数据时,我得到的第一列是true/false,而不是复选框。 这是vue表: 以下是我的表格数据:

  • 本文向大家介绍使用Vue生成动态表单,包括了使用Vue生成动态表单的使用技巧和注意事项,需要的朋友参考一下 开需求会了,产品说这次需求的表单比较多,目前有18个,后期的表单可能会有增加、修改。我作为这次的前端开发,看到这样的需求,心里知道要这样搞不得把自己累死,首先表单居多,还会有变更,以后维护起来也让人心力憔悴。 于是我提议做动态表单,做一个表单的配置系统,在系统里配置表单类型、表单得字段、以及

  • 本文向大家介绍vue使用video插件vue-video-player的示例,包括了vue使用video插件vue-video-player的示例的使用技巧和注意事项,需要的朋友参考一下 一、安装插件 二、配置插件   在main.js中全局配置插件 三、使用插件   在vue组件中的程序如下: 四、结果   结果如图所示:   vue-video-player的npm社区地址:https://w