【问题标题】:Vue render element based on given property基于给定属性的Vue渲染元素
【发布时间】:2020-12-07 10:31:41
【问题描述】:

我有下面的块

<div>
  <b-card no-body>
    <b-tabs pills card vertical no-key-nav v-model="step">
      <b-tab title="Subject" v-for="animal in animals" :key="animal" v-show="animal=1">
        <b-card-text>
          <enrollment-form>
          </enrollment-form>
        </b-card-text>
      </b-tab>
    </b-tabs>
  </b-card>
</div>

我只是想一次显示一个给定的组件。问题是,我正在同时呈现所有选项卡。当输入进入时,我只是打算使用按钮来迭代“步进”。

编辑

Data below
  data: () => {
    return {
      step: 2,
      animals: Array(3),
    }
  },

【问题讨论】:

  • 尝试动物 === 1 而不是动物 = 1

标签: javascript vue.js frontend bootstrap-vue


【解决方案1】:

不要将v-showv-for 组合在同一个元素中,并使用比较而不是赋值:

  <b-tab title="Subject" v-for="animal in animals" :key="animal" >
        <b-card-text v-show="animal==1">
          <enrollment-form>
          </enrollment-form>
        </b-card-text>
      </b-tab>

你的数据应该是这样的:



  data: () => {
    return {
      step: 2,
      animals: [...Array(3)].map((_,i)=>i+1),
    }
  },

【讨论】:

  • 这似乎是一个更好的方法,但我仍然会看到标签标题并且所有标签都没有内容的问题。如果有帮助,我也编辑/添加了我的数据属性。
  • 这几乎可以工作/做我想要的,我唯一的问题是实际的“标签”(说“主题”)仍然出现。我现在只能显示给定的内容,但仍然可以看到标签标题。除非我错过了什么?
  • 你的意思是每个标签都应该有索引作为标题吗?如果是的话,你可以做:title="animal"
  • 哦,我只是想隐藏一个给定的标签,而实际上根本不使用。
  • :title="`${animal===step?'Subject':''}`" 呢?
猜你喜欢
  • 2017-03-09
  • 2011-07-17
  • 2018-08-10
  • 2020-09-09
  • 2023-03-23
  • 2020-03-09
  • 2021-04-05
  • 1970-01-01
  • 2021-01-30
相关资源
最近更新 更多