简体   繁体   English

单击路由器链接时如何在vue3中隐藏引导程序offcanvas?

[英]How to hide bootstrap offcanvas in vue3 when router-link is clicked?

Good day, I would like to hide bootstrap-5/Offcanvas when I click on link inside.美好的一天,当我点击里面的链接时,我想隐藏 bootstrap-5/Offcanvas。 Here is Offcanvas:这是画布:

  //Button activate Offcanvas
  <button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasDarkNavbar"
          aria-controls="offcanvasDarkNavbar">
    <span class="navbar-toggler-icon"></span>
  </button>
  //Offcanvas
  <div class="offcanvas offcanvas-end text-bg-dark" tabindex="-1" id="offcanvasDarkNavbar"
       aria-labelledby="offcanvasDarkNavbarLabel">
    <div class="offcanvas-header">
      <h5 class="offcanvas-title" id="offcanvasDarkNavbarLabel">Menu</h5>
    </div>
    <div class="offcanvas-body">
      <ul class="nav nav-pills flex-column mb-sm-auto mb-0 align-items-center align-items-sm-start" id="menu">
        <li class="nav-item">
          <router-link to="/about" class="nav-link link-info align-middle px-0">
            <i class="fs-4 bi-house"></i> <span class="ms-1 d-none d-sm-inline">Home</span>
          </router-link>
        </li>
      </ul>
    </div>
  </div>

In official docs they say:在官方文档中,他们说:

You can create an offcanvas instance with the constructor, for example: var myOffcanvas = document.getElementById('myOffcanvas') OR var bsOffcanvas = new bootstrap.Offcanvas(myOffcanvas)您可以使用构造函数创建一个 offcanvas 实例,例如: var myOffcanvas = document.getElementById('myOffcanvas') 或 var bsOffcanvas = new bootstrap.Offcanvas(myOffcanvas)

and then use method "hide".然后使用方法“隐藏”。 I tried to use in router-link @click="hideThisCanvas" and then我尝试在路由器链接中使用 @click="hideThisCanvas" 然后

methods: {
  hideThisCanvas(){
    let myOffcanvas = document.getElementById('offcanvasDarkNavbar')
    myOffcanvas.hide();
  }
}

but it gives the error myOffcanvas.hide is not a function .但它给出了错误myOffcanvas.hide is not a function Please, help!请帮忙!

you have to create an offcanvas instance with the constructor, for example:您必须使用构造函数创建一个 offcanvas 实例,例如:

methods: {
  hideThisCanvas(){
    let myOffcanvas = document.getElementById('offcanvasDarkNavbar')
    let bsOffcanvas = bootstrap.Offcanvas.getInstance(myOffcanvas);
    bsOffcanvas.hide();
  }
}

OR或者

methods: {
      hideThisCanvas(){
        let myOffcanvas = document.getElementById('offcanvasDarkNavbar')
        let bsOffcanvas = new bootstrap.Offcanvas(myOffcanvas);
        bsOffcanvas.hide();
      }
    }

I do not know so much about vuejs but I hope this helps you.我对 vuejs 了解不多,但希望对您有所帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM