首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue.js:在vue.js中使用带条件呈现的vue.js控件

Vue.js:在vue.js中使用带条件呈现的vue.js控件
EN

Stack Overflow用户
提问于 2018-04-16 02:59:35
回答 1查看 10.2K关注 0票数 2

我有两个按钮,在屏幕上切换一些附加信息。我添加了按钮aria-controls属性,并为信息框呈现一个id

现在,当我验证html时,仍然会遇到一个错误,因为只有当vuex存储中的变量是true时,我才会显示这个信息框。我用v-if渲染它。

因此,这意味着如果没有单击按钮,元素不在DOM中,因此缺少相应的id,我将得到一个错误。

我尝试使用v-show,因为这只会隐藏它。

但这仍然只能呈现一个信息框,而不是2个。

只有这样,才能在模板中创建两个信息框并将v-show添加到这两个信息框中吗?或者有更好的方式来使用aria-controls

谢谢你的帮助

最好的

编辑:

这些是我的按钮,里面有咏叹调。

代码语言:javascript
复制
<template>
  <div>
    <ul v-if="nav.items">
      <li
        v-for="(item, key) in nav.items"
        @keyup.esc="closeInfoBox">
          <button to="" aria-controls="item.name" aria-expanded="false">Designathon</button>
      </li>
    </ul>
  </div>
</template>

这是我的信息箱组件:

代码语言:javascript
复制
<template>
  <div class="Infobox" v-if="infoboxOpen" id="//should correspond to aria controls">
    <span v-html="infoContent">Some content</span>
  </div>
</template>

只有当infoboxOpen === true (来自vuex商店)和内容被替换时才会显示,这取决于按下哪个按钮。(为了使代码更容易理解,并将重点放在这里的问题上,我省略了其中的一些内容)。

这就是我可以用v-if替换v-show的地方,但仍然只能呈现一个内容。我希望它尽可能的动态,因为用户可以在后端添加更多的信息框.

希望这有助于理解我的问题。

EN

回答 1

Stack Overflow用户

发布于 2018-04-16 06:41:08

您就快到了,只需使用以下方法使aria-controls成为动态属性

:aria-controls="infoboxOpen ? item.name : ''"

代码语言:javascript
复制
<template>
  <div>
    <ul v-if="nav.items">
      <li
        v-for="(item, key) in nav.items"
        @keyup.esc="closeInfoBox">
          <button to="" :aria-controls="infoboxOpen ? item.name : ''" aria-expanded="false">Designathon</button>
      </li>
    </ul>
  </div>
</template>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49849056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档