0
I'm having an issue with my offCanvas sidebar which I used with mScrollBar. The issue is when navigate between pages offCanvas starts working but after page refresh, it will give the following issue:jquery.js?1157:4059 Uncaught TypeError: jquery__WEBPACK_IMPORTED_MODULE_3___default(...)(...).mCustomScrollbar is not a function
    at HTMLDocument.eval (beginner.vue?186f:1218)
    at mightThrow (jquery.js?1157:3766)
    at process (jquery.js?1157:3834) 
and Here is what I have tried. 

首先,我已将必要的 jquery 函数安装到 mount 中,并将 mCustomScrollBar 外部 js 文件导入到脚本区域。这两件事以前对我有用。但是在vue js中,页面刷新后mCustomScrollBar功能不起作用。但是,如果我不刷新页面并在模板之间导航,它工作正常。我需要你关于这个问题的建议

navbar.vue

<template>
  <nav id="sidebar">
      <ul class="list-unstyled components">
          <p></p>
          <div id="dismiss">
              <i class="fas fa-times left"></i>
          </div>
          <li id="active" class="active">
            <a id="active"><i class="fa-fw fas fa-book fa-xs"></i> Программы</a>
                   <ul  id="homeSubmenu">
                                 <li>
                      <a href="en-beginner.html">Английский для начинающих</a>
                  </li>
                 <!--  <li>
                      <a href="#">Английский для среднего уровня</a>
                  </li> -->
                  <li>
                      <a href="https://ahoyla.com/ielts">Подготовка к IELTS</a>
                  </li>
              </ul>
          </li>
          <li  class="active">
            <a id="active"><i class="fa-fw fas fa-user-graduate fa-xs"></i>Обучение</a>
            <ul id="pageSubmenu">
                <li>
                    <a class="off-canvas-item" href="https://lms.ahoyla.com/english-beginners">Начальный уровень</a>
                </li>
                <li>
                    <a class="off-canvas-item" href="https://lms.ahoyla.com/english-intermediate">Средний уровень</a>
                </li>
                <li>
                    <a class="off-canvas-item" href="https://lms.ahoyla.com/ielts-course-1">IELTS</a>
                </li>
            </ul>
                                
          </li>
          <li class="active">
              <a href="https://ahoyla.com/"><img class="li-image" src="../assets/images/ahoyla.png" width="20" height="15">Метод обучения Ahoyla</a>
          </li>
          <li class="active">
              <a href="https://lms.ahoyla.com/plans-pricing"><img class="li-image" src="../assets/images/ahoyla.png" width="20" height="12">Тарифные планы</a>
          </li>
           </ul>
            </nav>
            <div class="overlay"></div>
</template>

<style scoped>
 @import '../assets/fonts.css';
 @import '../assets/fontawesome/css/fontawesome.min.css';
 @import url(https://cdn.rawgit.com/mfd/09b70eb47474836f25a21660282ce0fd/raw/e06a670afcb2b861ed2ac4a1ef752d062ef6b46b/Gilroy.css);
  nav .navbar .navbar-brand{
   width: 100%;   }   
   nav .navbar-image{
        width: 120px;
       margin: auto;     
   }
   nav #navbar-mobile{
       display: none;
   }        
   #nav-link {
       display: none;
   }   
   .nav-item .nav-link {
       font-size: 16px;
       color: black;
       font-weight: 700;
       padding: 0 10px;
       cursor: pointer;
   }   
   .navbar .navbar-brand {
       width: 200px;
   }   
   .nav-item .profile-rounded {
       border-radius: 50%;
       width: 30px;
       height: 30px;
       margin-right: 8px;   }


  #sidebar {
    width:375px;
    position: fixed;
    top: -20;
    left: -380px;
    height: 100vh;
    z-index: 999;
    background: #F8F8F6;
    color: #fff;
    transition: all 0.3s;
    overflow-y: scroll;
    box-shadow: 3px 3px 3px rgba(0, 0, 0, 0.2);
    background-repeat: no-repeat;
    padding: 20px;
}

   #sidebar.active {
       left: 0; 
   
   }
   #sidebar #active{
       background-image: none;
   }
   
   #dismiss {
       width: 35px;
       height: 35px;
       line-height: 20px;
       text-align: center;
       color: #303C4A;
       position: absolute;
       top: 0;
       right: 92%;
       cursor: pointer;
       -webkit-transition: all 0.1s;
       -o-transition: all 0.1s;
       transition: all 0.1s;
   }
   
   #dismiss:hover {
       background: #fff;
       color: #7386D5;
   }
   
   .overlay {
       display: none;
       position: fixed;
       width: 100vw;
       height: 100vh;
       background: rgba(0, 0, 0, 0.7);
       z-index: 998;
       opacity: 0;
       transition: all 0.5s ease-in-out;
   }
   .overlay.active {
       display: block;
       opacity: 1;
   }
   
   
   
   #sidebar ul.components {
       padding:8px 0 8px 0;
       border-bottom: 1px solid #47748b;
   }
   #sidebar ul{
       padding: 5px 0 7% 0;
       border-bottom: 1px solid #47748b;
   }
   
   
   
   #sidebar ul li a {
       font-size: 16px;
       display: block;
       color: #303C4A;
       padding: 5px;
       /* background-image:url('../assets/images/line.png'); */
       background-repeat: no-repeat;
       background-position: right center;
      
      
   }
   .mobile-menu{
       order:0;
   }
   .li-image{
       margin-left: 0;
   }
   
   
   
   #sidebar ul li.active>a,
   a[aria-expanded="true"] {
       color: #303C4A;
       font-weight: bold;
       padding: 5px;
    
   }
   
   
   a[data-toggle="collapse"] {
       position: relative;
   }
   
   .dropdown-toggle::after {
       display: block;
       position: absolute;
       top: 50%;
       right: 20px;
       transform: translateY(-50%);
   }
   
   ul ul a {
       font-size: 0.9em !important;
       padding-left: 30px !important;
   
    
   }
   
   ul.CTAs {
       padding: 20px;
   }
   
   ul.CTAs a {
       text-align: center;
       font-size: 0.9em !important;
       display: block;
       border-radius: 5px;
       margin-bottom: 5px;
   }
   
   a.download {
       background: #fff;
       color: #7386D5;
   }
   
   a.article,
   a.article:hover {
       background: #6d7fcc !important;
       color: #fff !important;
   }
</style>



<script>

import $ from 'jquery'

export default {
        name:'navbar',
  mounted(){   
let sidebar = document.createElement('script')
 sidebar.setAttribute('src', 'https://cdnjs.cloudflare.com/ajax/libs/malihu-custom-scrollbar-plugin/3.1.5/jquery.mCustomScrollbar.concat.min.js')
 document.head.appendChild(sidebar)
$(document).ready(function(){$("#sidebar")
.mCustomScrollbar({theme:"minimal"})
,$("#dismiss, .overlay")
.on("click",function(){$("#sidebar")
.removeClass("active"),$(".overlay")
.removeClass("active")}),$("#sidebarCollapse")
.on("click",function(){$("#sidebar")
.addClass("active"),$(".overlay")
.addClass("active"),$(".collapse.in")
.toggleClass("in"),$("a[aria-expanded=true]")
.attr("aria-expanded","false")})});

    },
    
}
 

</script>
4

0 回答 0