Vue 元素不通过 v-show 隐藏

2024-01-09

我假设 v-show 将根据传递的数据显示/隐藏元素。

由于某种原因,当 v-show 为 false 时,我的元素不会动态隐藏。当我手动将变量 (showNav) 更改为 false 时,它​​将在页面加载时隐藏,因此它似乎可以正常运行。

我的变量(showNav)取决于滚动。当向上滚动时,它设置为 true,当向下滚动时,它设置为 false。我希望我的导航栏在向下滚动时隐藏,但这没有发生。

滚动行为表现正常。两者都正确地将我的 v-show 变量 (showNav) 更改为 true 或 false,但该元素始终保持可见。

HTML模板

<template>
    <div id="home-page">
            <Navbar id="navbar" v-show="showNav" :class="{change_background: scrollPosition > 50}" />
    </div>
</template>

JS

mounted() {
            window.addEventListener('scroll', function(){
              // detects new state and compares it with the old one
              if ((document.body.getBoundingClientRect()).top > this.scrollPos) {
                this.showNav = true;
                console.log(this.showNav);
              }
              else
              {
                this.showNav = false;
                console.log(this.showNav);
              }
              // saves the new position for iteration.
              this.scrollPos = (document.body.getBoundingClientRect()).top;
            })
        },
        data() {
            return {
                scrollPosition: null,
                scrollPos: 0,
                showNav: true,
            }
        },


你需要处理scroll通过绑定中定义的方法之一来事件methods阻止窗口的滚动事件。在你的情况下callback函数传递给scroll事件监听将无权访问vue instance因此它不会更新vuejs。请参阅下面的工作示例。

new Vue({
  el: "#app",
  data() {
    return {
      scrollPosition: null,
      scrollPos: 0,
      showNav: true,
    }
  },
  mounted() {
    window.addEventListener('scroll', this.handleScroll);
  },
  beforeDestroy() {
    window.removeEventListener('scroll', this.handleScroll); // To avoid memory leakage
  },
  methods: {
    handleScroll(event) {
      // detects new state and compares it with the old one
      if ((document.body.getBoundingClientRect()).top > this.scrollPos) {
        this.showNav = true;
        console.log(this.showNav);
      } else {
        this.showNav = false;
        console.log(this.showNav);
      }
      // saves the new position for iteration.
      this.scrollPos = (document.body.getBoundingClientRect()).top;
    }
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app" style="min-height: 1000px;">
  <span v-show="showNav">You are trying to hide me</span>
</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue 元素不通过 v-show 隐藏 的相关文章

随机推荐

  • 将属性注入到动作过滤器中

    我正在尝试让属性注入在自定义操作过滤器属性上工作 它按预期工作 但是 我想在属性本身上使用 DI 我的过滤器看起来像这样 AttributeUsage AttributeTargets Class public sealed class H
  • 使用 cpanel 在 codeigniter 中执行 cronjob

    我的网站托管服务器是 hostmonster com 我的应用程序使用 codeigniter 框架 我有一个代码可以向我的用户发送电子邮件 我想使其自动执行 我已经使用了托管服务的 cpanel 并尝试将命令给出为 php q www m
  • 如何使用 jQuery 设置按钮单击事件的位置?

    我有这个页面 link http dgprint dg site com 在主页上 您会找到一个名为 获取报价 的按钮 当您单击此按钮时 我想打开链接 google com 我尝试使用此代码通过 jQuery 执行此操作 但它不起作用 jQ
  • 对项目不起作用的 OnClick 做出反应

    我有一个反应组件 它使用单独的 OnClick 呈现列表项 为了找出单击了哪个项目 处理程序接受一个参数 处理程序确实被调用 但无论单击哪个项目 控制台始终记录 item3 就像单击了 item3 一样 我在这里做错了什么 class It
  • iPhone,如何将表格的“编辑”按钮切换到“完成”,然后再切换回“编辑”?

    我添加了编辑按钮 self navigationItem rightBarButtonItem UIBarButtonItem alloc initWithBarButtonSystemItem UIBarButtonSystemItemE
  • 使用 LINQ 和实体框架检查 C# var 中的 null 值

    我对 LINQ 和实体框架以及 C 中的 var 关键字都很陌生 所以如果这听起来像一个 新手 问题 请原谅我 在执行以下操作后 我在检查空值时遇到问题 var entry myDB Entries Where e gt e Email e
  • 对话框上的 MFC 工具栏?

    我已经尝试了我能想到的一切方法来让工具栏显示在我的对话框上 包括尝试自己创建它CreateWindow 但不会显示 我在资源编辑器中创建了一个对话框 然后为其创建了一个类 尝试从两者派生CDialog and CDialogEx 是不是可以
  • ServiceStack.Text.JsonObject.Parse 与 NewtonSoft.Json.Linq.JObject.Parse 用于“动态”实例的嵌套树?

    我想尝试 ServiceStack 的 json 解析 但我已经弄清楚如何通过 Newtonsoft 做我需要的事情 通过 ServiceStack 可以完成同样的事情吗 我尝试过注释掉的代码 但它给出了异常 请参阅下面的异常详细信息 Th
  • 类型错误:元组索引必须是整数,而不是 str

    我正在尝试从数据库中提取数据并将它们分配给不同的列表 这个特定的错误给我带来了很多麻烦 TypeError 元组索引必须是整数 而不是 str 我尝试将其转换为浮动等 但没有成功 代码如下 conn MySQLdb connect deta
  • 一个输入字段上有多个 ng 模型?

    我有一个表格和一个项目列表 我用了ng model searchFor 适当地过滤掉项目列表 这部分工作正常 但我也想 提交 过滤掉的项目 这需要ng model adding item name 也在输入字段上 我认为 可以有多个吗ng
  • 使用 JSCH 调用脚本时如何从错误流和输入流获取一个流

    我正在使用 JSCH 调用位于远程计算机上的脚本文件 sh 在执行过程中 脚本输出错误和成功语句 我编写的 JSCH 代码展示了两个流 InputStream 和 Error Stream 如何获得包含错误和输出的单个输入流 Channel
  • 如何获取所有 Git 分支?

    我克隆了一个包含许多分支的 Git 存储库 然而 git branch只显示一个 git branch master 当我这样做时 我将如何在本地拉出所有分支git branch 它显示以下内容 git branch master stag
  • 为什么有人想要将表单元素包装在

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 例如 这是简单的形式 我经常使用
  • Django 1.8 使用gmail SMTP发送邮件

    我正在尝试使用发送邮件smtp gmail com在 Django 1 8 中 My settings py包含 EMAIL BACKEND django smtp ssl SSLEmailBackend EMAIL HOST smtp g
  • 将C++类代码分成多个文件,有什么规则?

    思考时间 为什么你要分割你的文件 正如标题所示 我遇到的最终问题是多重定义链接器错误 我实际上已经解决了问题 但我没有以正确的方式解决问题 在开始之前 我想讨论一下将一个类文件拆分为多个文件的原因 我已经尝试将所有可能的情况都放在这里 如果
  • 以编程方式选择 UITextField 中的所有文本

    如何以编程方式选择 UITextField 中的所有文本 这就是我的窍门 self titleField setSelectedTextRange self titleField textRangeFromPosition self tit
  • 从 GridFS 中清除孤立文件

    我有一个引用 GridFS 文件的集合 通常每条记录 1 2 个文件 这些集合相当大 父集合中大约有 705k 条记录 以及 790k GridFS 文件 随着时间的推移 出现了许多孤立的 GridFS 文件 父记录已被删除 但引用的文件并
  • 防止 XSS 但仍允许 PHP 中使用某些 HTML

    我想阻止 XSS 攻击 但我仍然想允许 HTML 标签 例如 b u i img a 和 YouTube 视频播放器 我不想接受 XSS 攻击 我正在使用 PHP 我建议使用html净化器 http htmlpurifier org 它是最
  • 找不到 Microsoft.VisualBasic.Powerpacks.ShapeContainer

    我正在用 C 开发一个游戏 它在我的笔记本电脑上运行正常 但是当我尝试在其他电脑上运行它时 它出现错误 找不到 Microsoft VisualBasic Powerpacks ShapeContainer 我使用 Visual Studi
  • Vue 元素不通过 v-show 隐藏

    我假设 v show 将根据传递的数据显示 隐藏元素 由于某种原因 当 v show 为 false 时 我的元素不会动态隐藏 当我手动将变量 showNav 更改为 false 时 它 将在页面加载时隐藏 因此它似乎可以正常运行 我的变量