2017-04-12 3 views
1

Ich möchte eine JavaScript-Funktion in meiner blade.php-Datei verwenden. Ich habe die xyz.js mit einer sehr einfachen Funktion DateiLaravel blade.php verwenden JavaScript kompiliert von Mix zu app.js

function picture(soemthing){ 
    document.getElementById('idXYZ').src = "example.com"; 
} 

Dann habe ich diese Datei in den webpack.mix.js Config hinzugefügt:

mix.js(['resources/assets/js/app.js', 'resources/assets/js/xyz.js'], 'public/js') 
.sass('resources/assets/sass/app.scss', 'public/css'); 

und laufen: NPM laufen dev. So weit, so gut, kompiliert npm mein Skript und die Bild Funktion wurde in der Datei app.js enthalten. Jetzt möchte ich ein Formular in blade.php hinzufügen und rufen Sie die Bild Funktion auf klicken. Ich habe die folgende blade.php Datei:

@extends('layouts.app') 
@section('content') 
<div class="container"> 
    <form> 
     Enter url: <input type="text" id="someID"> 
     <input type="button" onclick="picture($('#someID').val())" value="Click"/> 
    </form> 
</div> 
<script src="{{ mix('js/app.js') }}"></script> 
@endsection 

Und hier habe ich wirklich verloren (btw: Ich war immer der Back-End-Typ). Auf Seite neu laden Browser zeigt

[Vue warnen]: Fehler beim Kompilieren Vorlage: Vorlagen sollten nur für die Zuordnung des Status auf der Benutzeroberfläche verantwortlich sein. Vermeiden Sie die Platzierung von Tags mit Nebenwirkungen in Ihren Vorlagen, z. B. weil sie nicht analysiert werden.

Und wenn ich auf die Schaltfläche klicken habe ich

Fehler neu: 76 Uncaught Reference: xyz nicht definiert

Ich verstehe, dass die ersten Fehler besagt, dass die app.js Datei nicht geladen war und das ist der Grund, warum Bild nicht gefunden wird. Wie sollte ich app.js oder eine andere, von mix gemischte JavaScript-Datei einbinden? Ist es wirklich das Tag, das dieses Problem verursacht?

Antwort

0

Ich denke, Sie erhalten den Fehler, weil Sie ein neues Skript-Tag innerhalb der vue.js-Anwendung Div platzieren.

Wenn Sie Ihre Layout-Datei öffnen app.blade.php gibt es ein div mit id="app" und in diesem Bereich haben Sie Ihre Inhaltsbereich Ausbeute. Nebeneffekt bedeutet, dass Sie kein neues Skript in eine Vue.js-Vorlage laden sollten.

Das Skript sollte in Ihrem Layout am Ende des Body-Tags sein. Außerdem sollte das Skript-Tag folgendermaßen aussehen: <script src="{{ asset('js/app.js') }}"></script>

Dann sollte Ihr Skript verfügbar sein. Aber ich würde mir Vue.js ansehen und erklären, wie Sie Click Events dort handhaben. click handler docs

+0

Ich habe die genaue

Verwandte Themen