боковая панель не сворачивается внутри vue.js элемент #app (sb-admin-2)

#javascript #jquery #laravel #vue.js #bootstrap-4

#javascript #jquery #laravel #vue.js #bootstrap-4

Вопрос:

итак, у меня есть проект laravel с sb-admin-2 и Vue.js

как вы можете видеть, когда я использую элемент #app в виде блейда для всей HTML-страницы, боковая панель sb-admin-2 не сворачивается.

 ***NOTE*** this code is NOT working -> sidebar inside #app
{{-- this #app is for optional pages that using vue.js --}}
<div id="app"> ***NOTICE*************
    <div id="wrapper">

        <div id="content-wrapper" class="d-flex flex-column">

            <div id="content">

                <!-- Topbar -->
                <nav class="navbar navbar-expand navbar-light bg-white topbar mb-4 static-top shadow">

                    <!-- Sidebar Toggle (Topbar) --> ***NOTICE****************
                    <button id="sidebarToggleTop" class="btn btn-link d-md-none rounded-circle mr-3">
                        <i class="fa fa-bars"></i>
                    </button>

                </nav>
                <!-- End of Topbar -->


                @yield('content')

            </div>
            <!-- End of Main Content -->

        </div>
        <!-- End of Content Wrapper -->

    </div>
    <!-- End of Page Wrapper -->

</div>
{{-- end of #app element --}}

<!-- Bootstrap core JavaScript-->
<script src="{{ asset('js/admin/vendor/jquery/jquery.min.js') }}"></script>
<script src="{{ asset('js/admin/vendor/bootstrap/js/bootstrap.bundle.min.js') }}"></script>

<!-- Core plugin JavaScript-->
<script src="{{ asset('js/admin/vendor/jquery-easing/jquery.easing.min.js') }}"></script>

<!-- Custom scripts for all pages-->
<script src="{{ asset('js/admin/js/sb-admin-2.min.js') }}"></script>

<!-- Page level plugins -->
<script src="{{ asset('js/admin/vendor/chart.js/Chart.min.js') }}"></script>
<!-- vue.js  -->
<script src="{{ asset('js/app.js') }}"></script>
  

но когда я использую его на более низком уровне, который не включает переключатель боковой панели, он снова работает.

 ***NOTE*** this code is working -> sidebar is NOT inside #app
{{-- this #app is for optional pages that using vue.js --}}
<div id="wrapper">

    <div id="content-wrapper" class="d-flex flex-column">

        <div id="content">

            <!-- Topbar -->
            <nav class="navbar navbar-expand navbar-light bg-white topbar mb-4 static-top shadow">

                <!-- Sidebar Toggle (Topbar) --> ***NOTICE********************
                <button id="sidebarToggleTop" class="btn btn-link d-md-none rounded-circle mr-3">
                    <i class="fa fa-bars"></i>
                </button>

            </nav>
            <!-- End of Topbar -->

            <div id="app"> ***NOTICE***********************

                @yield('content')

            </div>
            {{-- end of #app element --}}
        </div>
        <!-- End of Main Content -->

    </div>
    <!-- End of Content Wrapper -->

</div>
<!-- End of Page Wrapper -->


<!-- Bootstrap core JavaScript-->
<script src="{{ asset('js/admin/vendor/jquery/jquery.min.js') }}"></script>
<script src="{{ asset('js/admin/vendor/bootstrap/js/bootstrap.bundle.min.js') }}"></script>

<!-- Core plugin JavaScript-->
<script src="{{ asset('js/admin/vendor/jquery-easing/jquery.easing.min.js') }}"></script>

<!-- Custom scripts for all pages-->
<script src="{{ asset('js/admin/js/sb-admin-2.min.js') }}"></script>

<!-- Page level plugins -->
<script src="{{ asset('js/admin/vendor/chart.js/Chart.min.js') }}"></script>
<!-- vue.js  -->
<script src="{{ asset('js/app.js') }}"></script>
  

нет ошибок, нет предупреждений при загрузке страницы или щелчке переключателя боковой панели.

когда переключатель боковой панели находится внутри vue.js #app, jquery (sb-admin-2) не знает о существовании какого-либо события нажатия на эту кнопку.

это мой laravel bootstrap.js файл:

 window._ = require('lodash');

window.axios = require('axios');

window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
  

это мой laravel app.js исходный файл:

 require('./bootstrap');

window.Vue = require('vue');

Vue.component('branches-component', require('./components/BranchesComponent.vue').default);


const app = new Vue({
    el: '#app',
});
  

только когда я удаляю vue.js из app.js затем кнопка снова работает.

Комментарии:

1. кто-нибудь знает какой-нибудь хороший простой бесплатный фреймворк css, такой как bootstrap4, у которого есть шаблон администратора, не использующий библиотеки, такие как jquery и т.д.?

2. лучший ответ: НЕ ИСПОЛЬЗУЙТЕ JQUERY, ДАЖЕ ЕСЛИ ЭТО СТОИТ ТОГО, ЧТОБЫ НЕ ИСПОЛЬЗОВАТЬ twitter-bootstrap.

Ответ №1:

Я наконец нашел ответ.

проблема заключалась в загрузке файлов Vue javascript после jquery и sb-admin-2, поэтому DOM не был отрисован для jquery или чего-то подобного:

правильный способ включения скриптов состоял в том, чтобы сначала импортировать Vue, а затем jquery, admin-sb-2 и т.д…

 
<!-- Vue.js  should first-->
<script src="{{ asset('js/app.js') }}"></script>

<!-- jquery and admin-sb-2 , etc... -->
<script src="{{ asset('js/admin/vendor/jquery/jquery.min.js') }}"></script>
<script src="{{ asset('js/admin/vendor/bootstrap/js/bootstrap.bundle.min.js') }}"></script>
<script src="{{ asset('js/admin/vendor/jquery-easing/jquery.easing.min.js') }}"></script>
<script src="{{ asset('js/admin/js/sb-admin-2.min.js') }}"></script>
<script src="{{ asset('js/admin/vendor/chart.js/Chart.min.js') }}"></script>