【问题标题】:Laravel custom javascript on blade is not working刀片上的 Laravel 自定义 javascript 不起作用
【发布时间】:2019-09-21 15:18:09
【问题描述】:

我有这种情况,我想将数据传递给 Bootstrap 4 模式。我有一个记录列表,其中包含要编辑和删除的自己的链接。由于我要加载模态确认以删除特定记录,因此需要传递几个参数,例如销毁路由的 ID。

我已经尝试过Laracasts forum 的解决方案。但是,首先,脚本不起作用,因为 console.log 没有输出任何内容。

注意:我使用的是app.js,所以可能与问题有关,但我没有找到解决此问题的提示。

这是我的accounts.blade.php

@extends('layouts.app')

@section('title','Accounts list')

@section('content')
    <div class="container">
        <div class="row justify-content-center">
            <div class="col">
                <div class="card">
                    <div class="card-header">
                        My accounts
                    </div>
                    <div class="card-body">
                        <h5 class="card-title">Accounts list</h5>
                        <h4><a href="{{ route('accounts.create') }}" class="btn btn-success">Create a new account</a></h4>
                        <hr>
                        <ul>
                            @forelse ($user->accounts as $account)
                                <li>
                                    <a href="{{ route('accounts.show',$account->id) }}" title="Your accounts blah">{{ $account->name }}</a> || <a href="{{ route('accounts.edit', $account->id) }}">Edit</a> |
                                    <button type="button" class="btn btn-outline-danger delete-company"
                                            data-toggle="modal"
                                            data-target="#exampleModal"
                                            data-id="{{$account->id}}"
                                            data-url="{{ route('accounts.destroy',['id'=>$account->id]) }}"
                                            data-name="{{$account->name}}"
                                    >
                                        Delete
                                    </button>

                                    {{--<a href="{{ route('accounts.destroy',$account->id) }}">Delete</a> </li>--}}
                                    {{--read this reference: https://medium.freecodecamp.org/custom-confirm-box-with-bootstrap-4-377aa67723c2--}}
                                    <hr>
                                </li>
                            @empty
                                <li class="card-text text-danger">You do not have an account yet.</li>
                            @endforelse
                        </ul>
                    </div>
                </div>
            </div>
        </div>
    </div>

    {{--MODAL delete confirmation modal--}}
    <!-- Modal -->
    <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title" id="exampleModalLabel">Are you sure to delete the <span id="accountname"></span> account?</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-body">
                    Everything will be removed.
                </div>
                <div class="modal-footer">
                    {{--https://stackoverflow.com/a/33688683/1883256--}}
                    <form id="deleteform" action="" method="POST">
                        @csrf
                        @method('DELETE')
                        {{--
                        {{ csrf_field() }}
                        {{ method_field('DELETE') }}
                        --}}
                        <button type="submit" class="btn btn-outline-danger btn-sm">Yes, delete</button>
                    </form>
                    <button type="button" class="btn btn-info" data-dismiss="modal">Cancel</button>
                </div>
            </div>
        </div>
    </div>
@endsection

@section('js')
    {{--Ver: https://laracasts.com/discuss/channels/laravel/how-to-pass-value-to-bootstrap-modal-window?page=1#reply=508543 --}}
    <script>/*NOTHING HERE IS WORKING! WHY???*/
        $(document).ready(function () {
            console.log('testing'); // NOT WORKING!
            // For A Delete Record Popup
            $('.delete-company').click(function () {
                console.log('clicked!'); //NOT WORKING!!!
                var id = $(this).attr('data-id');
                var name = $(this).attr('data-name');
                var url = $(this).attr('data-url');

                $("#accountname").append(name);
                $("#deleteForm", 'input').val(id);
                $("#deleteForm").attr("action", url);
            });
        });
    </script>
@endsection

layouts/app.blade.php

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- CSRF Token -->
    <meta name="csrf-token" content="{{ csrf_token() }}">

    <title>{{ config('app.name', 'Laravel') }} - @yield('title')</title>

    <!-- Scripts -->
    <script src="{{ asset('js/app.js') }}" defer></script>

    <!-- Fonts -->
    <link rel="dns-prefetch" href="//fonts.gstatic.com">
    <link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet" type="text/css">

    <!-- Styles -->
    <link href="{{ asset('css/app.css') }}" rel="stylesheet">

    {{--Favicon--}}
    <link rel="shortcut icon" href="{{ asset('img/favicon_io/favicon-16x16.png') }}">
</head>
<body>
    <div id="app">
        @include('layouts.partials._nav')
        <div class="container">
            <main class="py-3">
                {{--Flash messages--}}
                @include('layouts.partials.flashMessages._messages_x')
                @include('layouts.partials.flashMessages._messages')
                @yield('content')
            </main>
        </div>
    </div>
</body>
</html>

至于布局app.blade.php 我已经尝试了 &lt;script src="{{ asset('js/app.js') }}" defer&gt;&lt;/script&gt;&lt;script src="{{ asset('js/app.js') }}"&gt;&lt;/script&gt; 没有 defer 并且它不起作用。

为什么这个脚本根本不起作用???是app.js造成了麻烦吗?我如何使它工作?

如果我能看到console.log() 工作,那就太好了!

【问题讨论】:

  • 显示你的layouts.app刀片文件
  • @bhavinjr 你是对的!我错过了。现在我已经展示了。
  • @Pathros 你没有将你的 seciton('js') 注入到你的布局中,@yield('js') 在 body 标签将解决你的问题之前。
  • 在 DOM 加载之前加载 app.js 会导致异常行为。
  • 检查我的答案

标签: javascript laravel laravel-5 laravel-blade


【解决方案1】:

用正确的方式做一件事试试这个

layouts/app.blade.php

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- CSRF Token -->
    <meta name="csrf-token" content="{{ csrf_token() }}">

    <title>{{ config('app.name', 'Laravel') }} - @yield('title')</title>

    <!-- Scripts -->
    <script src="{{ asset('js/app.js') }}" defer></script>

    <!-- Fonts -->
    <link rel="dns-prefetch" href="//fonts.gstatic.com">
    <link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet" type="text/css">

    <!-- Styles -->
    <link href="{{ asset('css/app.css') }}" rel="stylesheet">

    {{--Favicon--}}
    <link rel="shortcut icon" href="{{ asset('img/favicon_io/favicon-16x16.png') }}">
</head>
<body>
    <div id="app">
        @include('layouts.partials._nav')
        <div class="container">
            <main class="py-3">
                {{--Flash messages--}}
                @include('layouts.partials.flashMessages._messages_x')
                @include('layouts.partials.flashMessages._messages')
                @yield('content')
            </main>
        </div>
    </div>
    @stack('scripts')
</body>
</html>

accounts.blade.php

@extends('layouts.app')

@section('title','Accounts list')

@section('content')
    //your content
@endsection

@push('scripts')
<script>
    console.log('hello');
</script>
@endpush

你可以阅读Stack

【讨论】:

  • Uncaught ReferenceError: $ is not defined怎么解决?我试过this answer 但没有运气。 console.log() 正在工作,但没有定义 $(whatever) :/ 。为什么???
  • jquery 脚本丢失。需要加jquery.min.js
  • 希望,this article would work ... #myOwnNotes。否则,如何使用 vue 完成这项工作?
猜你喜欢
  • 2019-01-31
  • 1970-01-01
  • 2019-01-12
  • 2019-12-19
  • 2014-11-15
  • 2017-07-07
  • 2016-03-11
  • 2013-06-04
  • 1970-01-01
相关资源
最近更新 更多