Bootstrap 模式在 laravel js 文件中不起作用

问题描述 投票:0回答:2

我使用的是 Laravel 9,我已经安装了 Bootstrap、Tailwind、jQuery 和 Vite。 这是我的 vite.config.js 文件:

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import path from 'path'

export default defineConfig({
    plugins: [
        laravel({
            input: [
                'resources/sass/app.scss',
                'resources/js/app.js',
            ],
            resolve: {
                alias: {
                    '~bootstrap': path.resolve(__dirname, 'node_modules/bootstrap'),
                    '$': 'jQuery'
                }
            },
            refresh: true,
        }),
    ],
});

这是我的 app.js 文件:

import './bootstrap';
import '../sass/app.scss';
import * as bootstrap from 'bootstrap';
import jQuery from 'jquery';
window.$ = jQuery;
import swal from 'sweetalert2';
window.swal = swal;

在app.blade.php中,我添加了vite js文件。

@vite(['resources/sass/app.scss', 'resources/js/app.js', 'resources/css/tailwind.css'])
    @vite(['resources/js/functions.js'])
    @include('sweetalert::alert')

单击按钮时,我创建了一条路线,在其中返回我的模态视图。但在我的functions.js文件中,函数.modal('show')无法识别

$("#show-data").on('click', function(){
    $.ajax({
        type: "POST",
        url: '/getMyPersonalData',
        headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
        data: {
            unic: $('#unic-data').val()
        },
        success: function (response) {
            $("#show-personal-data").html(response.html);
            $("#personalModal").modal("show");
           
        },
        fail: function (response) {
            console.log("fail");
        }
    });
});

在控制台中,出现以下错误:functions.js:12 Uncaught TypeError: $(...).modal is not a function 看起来引导程序没有加载,但事实是。你有什么想法我该如何解决它吗? 谢谢。

php jquery laravel bootstrap-modal laravel-9
2个回答
1
投票

你可以尝试只使用 JS 的 cdn 而不要使用

import * as bootstrap from 'bootstrap';
但对于CSS,保持粗鲁。 为我工作,但只是一个解决方法。我有同样的问题...这是对我有用的唯一方法。


0
投票

在 Laravel 10 中使用 Inertia 和 Vite:我的解决方案是在 resources 文件夹中创建一个新的 .js 文件。我将其命名为jquery.js,内容为:

import jQuery from 'jquery';
window.$ = window.jQuery = jQuery;

您需要将其包含在您的 vite 配置中:

export default defineConfig({
    plugins: [
        laravel({
            input: [
                "resources/js/jquery.js",
                "resources/js/app.js",

etc...

然后在刀片模板中,在加载 bootstrap 的文件之前(在我的例子中为 app.js):

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
    @vite('resources/js/jquery.js')
    @vite('resources/js/app.js')
    @vite('resources/sass/app.scss')
    @inertiaHead
</head>

除非我们这样做,否则 vite 似乎会以某种方式扰乱顺序。 .Modal() 函数现在可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.