2012-03-11 63 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