2017-04-20 2 views
0

Ich möchte meine Funktion in globalen js einstellen. So kann es von überall genanntWie kann ich JavaScript-Funktion global einstellen?

habe ich Funktion dieses:

$(function() { 
    function formatCurrency(input) { 
     return input.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1."); 
    } 
}); 

ich die Funktion auf der

setzen

C:\xampp\htdocs\mysystem\resources\assets\js\main.js

Und ich fügen Sie diese: <script src="{{URL::asset('/resources/assets/js/main.js')}}"></script> auf dem

C:\xampp\htdocs\mysystem\resources\views\layouts\app.blade

Bei der Ausführung gibt es auf der Konsole einen Fehler wie diesen:

GET http://mysystem.dev/resources/assets/js/main.js 404 (Not Found)

Wie kann ich es lösen?

+0

A 404 kann nur durch ein paar Gründe verursacht werden. Tippfehler, fehlende und falsche Konfiguration. – Darkrum

+0

@Darkrum, Sie können die Antworten im Detail geben –

Antwort

2

Das Problem scheint zu sein, dass Sie asset() falsch verwenden.

Asset bezieht sich auf eine Datei in /public.

Sie kompilieren sollte/minimieren Sie Ihre JS für die Produktion und steckte es irgendwo in /public, das heißt /public/js/my.js

+0

Ich hatte es getan. Aber jetzt der Fehler: 'Uncaught ReferenceError: formatCurrency ist nicht definiert –

0

können Sie globale Funktion wie diese

window.formatCurrency = function(input){ 
      return input.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1."); 
     } 

definieren und Sie sind definieren Funktion in Ready-Funktion ($ (Funktion)) dann das müssen Sie auch in ready-Funktion aufrufen. Also besser definieren Sie es außerhalb der fertigen Funktion oder in selbstaufrufenden Funktion.

+0

Warum unten abstimmen? –

+0

Nicht ich. Ich versuche das. Aber es gibt einen Fehler: 'GET http://mysystem.dev/resources/assets/js/main.js 404 (nicht gefunden)' –

+0

Aber das ist kein Skriptfehler. Es bedeutet, dass der Pfad falsch ist. Der Weg, den du erwähnst, ist nicht falsch. Überprüfen Sie den Pfad der Datei und überprüfen Sie, ob Ihre URL korrekt ist oder nicht. Ich meine main.js Datei ist nicht in Ihrer Seite enthalten. Und bitte stimmen Sie eine Antwort ohne zu versuchen ist inakzeptabel. –

2

Sie sollten Ihre Funktion als eine Methode des Fensterobjekts definieren.

window.formatCurrency = function(input) { 
    return input.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1."); 
} 

Ein weiterer sauberer wie es Ihre Funktion als Methode eines Objekts namens Utils, zu definieren, wie unten sein würde:

var Utils = (function(){ 
    function formatCurrency(input){ 
     return input.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1."); 
    } 
    return { 
     formatCurrency: formatCurrency 
    } 
}()); 

Dabei werden Sie nicht verschmutzen den globalen Namespace. Im globalen Namespace namens Util wird nur eine Variable definiert, die eine Obejct mit nützlichen Funktionen enthält, die von anderen Teilen Ihrer Anwendung verwendet werden können. So wie es ist, können Sie die Vorteile des letzteren Ansatzes nicht sehen. Sie können jedoch überlegen, wie es wäre, wenn Sie 3 weitere Funktionen nutzen möchten, die selbst 2 weitere Funktionen als Helfer verwenden. Wenn das der Fall wäre, würde Ihre Return-Anweisung auch die 3 weiteren Funktionen enthalten, während die 2 Funktionen, die ich zuvor erwähnte, überhaupt nicht epxosiert wären!

+0

Können Sie bitte ein Beispiel für die Deklaration mehrerer Funktionen oder Tutorial-Links teilen. Ich suche immer danach. –

+0

@Christos, das versuche ich. Aber es gibt einen Fehler: 'GET http://mysystem.dev/resources/assets/js/main.js 404 (nicht gefunden)' –

+1

@DavinderKumar Dies heißt Modul-Muster. Sie können von diesem Link https://addyosmani.com/resources/essentialjsdesignpatterns/book/#modulepatternjavascript starten. – Christos

Verwandte Themen