2012-03-11 80 views
0

一個問題,我問自己很長一段時間:以下2種方法從我的觀點參數傳遞給我的javascript:傳遞參數文件

方法1:

我的觀點:

<script type="text/javascript"> 
    tabChangeConfirmationTitle = "@Html.Raw(UserResource.Warning)"; 
    tabChangeConfirmationMessage = "@Html.Raw(UserResource.TabChangeConfirmationMsg)"; 
</script> 

我的JavaScript文件:

var tabChangeConfirmationTitle; 
var tabChangeConfirmationMessage; 

方法2:

我的觀點:

<script type="text/javascript"> 
    fctTranslationsForConfirmationDialog("@Html.Raw(UserResource.Warning)", "@Html.Raw(UserResource.TabChangeConfirmationMsg)"); 
</script> 

我的JavaScript文件:

var tabChangeConfirmationTitle; 
var tabChangeConfirmationMessage; 

function fctTranslationsForConfirmationDialog(Title, Message) { 
    tabChangeConfirmationTitle = Title; 
    tabChangeConfirmationMessage = Message; 
} 

我更喜歡第一個方法。這是一個好的嗎?有更好的方法嗎?

謝謝。 PS:我知道還有其他相關的問題,但我希望你對這兩種方法有所看法。

回答

0

我會去的變化對方法1:

js文件:

var p = { 
    tabChangeConfirmationTitle: null, 
    tabChangeConfirmationMessage: null 
}; 
在你的HTML頭

<script type="text/javascript"> 
    document.onload = function() { 
     p.tabChangeConfirmationTitle = "@Html.Raw(UserResource.Warning)"; 
     p.tabChangeConfirmationMessage = "@Html.Raw(UserResource.TabChangeConfirmationMsg)" 
    }; 
</script> 

這樣你的HTML不包含儘可能多的JavaScript,如果你想添加更多的變量,它非常乾淨和容易如何做到這一點;只需將變量添加到您的js文件中的p對象並在onload處理程序中初始化它即可。任何其他的JavaScript,然後onload初始化代碼可以進入你的js文件,它不會被非JavaScript代碼混亂。

另外,通過使用p對象,您可以創建一個名稱空間並避免用多於1個對象污染全局名稱空間。

+0

謝謝湯姆。而如果我有其他的JavaScript變量(這次只用於我的js文件)?比方說,我有其他變量,如:posX,posY,objWidth,objHeight,...它是否會讓我的所有js變量都添加到這個p對象中? – Bronzato 2012-03-11 08:32:04

+0

我會這麼說,是的。 – Tom 2012-03-11 08:34:06

+0

非常感謝我的朋友。 – Bronzato 2012-03-11 08:42:46