是否有任何内置方法可以有条件地显示父元素?

为了说明:

<a v-show-but-keep-inner="someCondition">
    <span>This is always rendered no matter what</span>
</a

推荐答案

我认为这是一项定制指令的工作.我做了一个快速POC:

Vue.directive('showButKeepInner', {
  bind(el, bindings) {
    bindings.def.wrap = function(el) {
      // Find all next siblings with data-moved and move back into el
      while (el.nextElementSibling && el.nextElementSibling.dataset.moved) {
        el.appendChild(el.nextElementSibling).removeAttribute('data-moved')
      }
      el.hidden = false
    }

    bindings.def.unwrap = function(el) {
      // Move all children of el outside and mark them with data-moved attr
      Array.from(el.children).forEach(child => {
        el.insertAdjacentElement('afterend', child).setAttribute('data-moved', true)
      })
      el.hidden = true
    }
  },

  inserted(el, bindings) {
    bindings.def[bindings.value ? 'wrap' : 'unwrap'](el)
  },

  update(el, bindings) {
    bindings.def[bindings.value ? 'wrap' : 'unwrap'](el)
  }
})

new Vue({
  el: '#app',
  data: {
    someCondition: false
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.10/vue.min.js"></script>

<div id="app">
  <p>
    <button v-on:click="someCondition = !someCondition">{{ someCondition }}</button>
  </p>
  <a v-show-but-keep-inner="someCondition" href="/">
    <span>This is always rendered no matter what</span>
  </a>
</div>

Vue.js相关问答推荐

我可以手动访问 vue-router 解析器吗?

用于循环数组的模板元素内的条件渲染

如何防止Nuxt3重新加载时滚动跳到网页顶部

无法在cPanel/SSH上构建 | Laravel + Vue优化

过渡如何在 Vue JS 3 中的图像上工作?

绑定事件在渲染函数中不起作用

当try 更新 Vue 3 中的关联数组中的单个元素时,所有值都会更新

我如何使用 vuejs 在我的 url 中编码一个令牌

指定一个 vue-cli vue.config.js 位置

在 VueJS 中存储图像的正确位置是什么 - 公共文件夹或assets文件夹?

Vue.js 开发工具未显示

Laravel Vue - 如何让 vue 在公共文件夹中查找图像

根据 URL 有条件地隐藏视图组件

如何在不实例化根实例的情况下使用 vue 组件?

使用 Vue.js (cdn) 在特定元素上切换显示/隐藏

将数据传递给另一条路由上的组件

vue-router的router-link实际刷新?

Vue-i18n '无法读取 Proxy.Vue.$t 处未定义的属性 '_t'

在 Vue 中使用事件修饰符 .prevent 提交表单而不进行重定向

如何隔离 Vuetify 全局样式