如何切换 VueJs 组件的可见性?

Posted

技术标签:

【中文标题】如何切换 VueJs 组件的可见性?【英文标题】:How to Toggle Visibility of VueJs Component? 【发布时间】:2020-04-10 13:31:51 【问题描述】:

在我的 Laravel 应用程序中,我在 Blade 模板上有一个按钮来显示/隐藏 Vue 组件。我在以下代码here 的帮助下尝试了以下操作。我收到以下错误:

[Vue 警告]:实例上未定义属性或方法“isShow” 但在渲染期间引用。确保该属性是 反应式,无论是在数据选项中,还是对于基于类的组件,通过 初始化属性。看: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.

@extends('layouts.app')
@section('content')
 <button v-on:click="isShow = !isShow">Toggle hide and show</button>
 <site-email  v-if="isShow"></site-email>
@endsection

组件

 <template>
    <div class="label label-info"> domain's Email</div>
 <template>

 <script>
  export default 
    data()
      return 
          isShow : false,
        
    
 
 </script>

I will highly appreciate your help. 

【问题讨论】:

【参考方案1】:

Vue 的响应式数据属性是Component scope

您现在正在组件外部访问isShow,因此 Vue 无法访问该属性。

我的建议:你可以在&lt;site-email&gt;组件中插入按钮。

 <template>
    <button v-on:click="isShow = !isShow">Toggle hide and show</button>
    <div v-show="isShow" class="label label-info"> domain's Email</div>
 <template>

 <script>
  export default 
    data()
      return 
          isShow : false,
        
    
 
 </script>

或者,如果您不想在组件中包含按钮,则​​必须使用诸如“事件总线”,“.sync props”之类的方法在组件之间进行通信

【讨论】:

以上是关于如何切换 VueJs 组件的可见性?的主要内容,如果未能解决你的问题,请参考以下文章

如何切换 Vim 的搜索高亮可见性而不禁用它

使用 Visual States 切换 AppBarButton 可见性时出现“未检测到已安装的组件”错误

Silverlight 4:如何切换控件可见性

如何使用按钮单击来切换 div 的可见性

切换 div 的可见性属性

Java摇摆;如何切换面板的可见性?