我问自己很久的一个问题:下面是将参数从我的视图传递到我的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 :(得分:0)
我会考虑方法1的变化:
js file:
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对象,您可以创建命名空间,并避免使用多个对象污染全局命名空间。