使用 Scripts.Render MVC4 时的 Javascript 全局变量

标签 javascript asp.net-mvc-4 global-variables render

我有一个使用 javascript 捆绑的 MVC 4 项目。

在我的 _Layout.cshtml 页面中,我有这样的内容:

    @Scripts.Render("~/bundles/scripts/desktop/modernizr",
        "~/bundles/scripts/desktop/jquery","~/bundles/scripts/desktop/jqueryui",
        "~/bundles/scripts/desktop/jqueryvalidation", "~/bundles/scripts/custom")

还有其他的,但这只是一个例子。在自定义脚本中调用的一个脚本中,我需要引用在就绪函数中设置的全局变量,如下所示:

  <script type="text/javascript">                   
     $(function () {            
         //alert('Page is ready!');
         var warning = 10;
         var timeout = 20;   }); </script>     

问题是,我似乎总是在需要警告和超时变量的方法中遇到错误。关于我应该如何创建这些变量,我是否遗漏了一些明显的东西(但对我来说不是!)?我是否应该在 $Ready 之外 var 它们,因为 js 在页面技术准备就绪之前加载?

如果一切都已经在渲染包中并且没有脚本 block ,那么全局变量应该放在哪里?

谢谢!

最佳答案

warningtimeout 变量不是全局的。它们仅在您提供给 $ 函数的函数中定义。

我通常建议尽可能避免全局变量,但如果你真的想创建全局变量,只需使用这个:

<script type="text/javascript">
   var warning = 10;
   var timeout = 20; 
</script>     

或者这个:

<script type="text/javascript">
   $(function () {
       window.warning = 10;
       window.timeout = 20;   
   });
</script>     

关于使用 Scripts.Render MVC4 时的 Javascript 全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20862900/

相关文章:

javascript - 如何使用循环索引保存/清除 setTimeout 数组?

javascript - 如何删除文本区域每一行中的第一个字符

javascript - TypeScript:创建一个空类型的容器数组

asp.net-mvc - 尝试继承RegularExpressionAttribute,不再验证

Javascript - 每 12 秒在提要 "x seconds ago"中发布一次

c# - 如何使用 mvc 4 web api 中的 HttpResponseMessage 对象设置 etag?

jquery - Grid.MVC 日期过滤器

python - 全局变量声明

c++ - 在 C++ DLL 中使用 C 风格导出 API 之间公共(public)类的方法

c - 在这种情况下如何避免全局变量(嵌入式 C)