2017-04-20 95 views
0

我想在全局js中設置我的功能。因此,它可以從任何地方如何在全球設置javascript功能?

叫我有作用的:

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

我把功能上

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

我補充一點:在

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

<script src="{{URL::asset('/resources/assets/js/main.js')}}"></script>執行時,在控制檯上存在這樣的錯誤:

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

我該如何解決?

+0

404只能由幾個原因造成的。錯字,丟失和不正確的配置。 – Darkrum

+0

@達克魯姆,你可以提供更詳細的答案 –

回答

2

這個問題似乎是你使用asset()錯誤。

資產是指/public中的文件。

你應該編譯/最小化你的JS進行生產,並把它在某處/public,即/public/js/my.js

+0

我已經做到了。但現在錯誤:'未捕獲的ReferenceError:formatCurrency未定義' –

0

您可以定義全局函數這樣

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

,你定義準備功能($(功能))功能,那麼你必須準備功能也呼籲這一點。所以最好在ready函數或自調函數外面定義它。

+0

爲什麼投票表決? –

+0

不是我。我嘗試。但存在錯誤:'GET http://mysystem.dev/resources/assets/js/main.js 404(Not Found)' –

+0

但這不是腳本錯誤。這意味着路徑是錯誤的。你提到的道路沒有錯。交叉檢查文件的路徑,並檢查您的網址是否正確。我的意思是main.js文件不包含在你的頁面中。 而請不要嘗試投票答案是不可接受的。 –

2

你應該定義你作爲窗口對象的方法。

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

另一個更乾淨方式,它是定義你的功能叫做Utils對象,像下面的方法:

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

這樣做,你就不會污染全局命名空間。在全局命名空間中只有一個稱爲Util的變量,它將包含一個可以被應用程序的其他部分使用的有用函數的對象。因爲它是你不能看到後一種方法的好處。但是你可以考慮如果你想使用3個更多的功能,那麼他們自己使用2個其他功能作爲助手。如果是這樣的話,你的迴歸聲明也會包含3個函數,而我之前提到的2個函數根本就不會出現!

+0

你可以請分享一個例子聲明多個功能或任何教程鏈接。我一直在尋找這個。 –

+0

@Christos,我嘗試過。但存在錯誤:'GET http://mysystem.dev/resources/assets/js/main.js 404(Not Found)' –

+1

@DavinderKumar這就是所謂的模塊模式。你可以從這個鏈接https://addyosmani.com/resources/essentialjsdesignpatterns/book/#modulepatternjavascript開始。 – Christos