【问题标题】:MVC making a global js variable for partial viewMVC为局部视图制作一个全局js变量
【发布时间】:2015-02-06 15:51:52
【问题描述】:

好的,这是场景。我在 mvc 应用程序中有一个部分视图,它被呈现为剑道弹出窗口内容。现在,我需要创建一个变量(它是数组),我可以从这个局部视图脚本中的任何方法访问它,但是从这个弹出窗口中它应该是不可见的。原因是我需要在其中存储这个特定弹出窗口的数据,并且可以有几个这样的弹出窗口。我怎样才能做到这一点?

【问题讨论】:

  • 您真的想要一个私有变量用于弹出窗口,还是只想为每个弹出窗口设置一个唯一变量?
  • @rajeemcariazo,每个弹出窗口的唯一变量。对不起,如果我不够清楚,我的英语远非完美

标签: javascript asp.net-mvc asp.net-mvc-partialview


【解决方案1】:

当你声明你的窗口时,你可以像这样设置一个变量:

var myWindow = $("#window");
myWindow[0].myVariable = [1,2,3];

【讨论】:

    【解决方案2】:

    为了获得更好的答案,您应该尽量让您的问题尽可能笼统。假设了解剑道,意味着只有熟悉剑道的人才能回答(至少很容易),而这实际上与您使用剑道的事实无关。最好说“我有一个模式窗口,它显示在同一页面上呈现的 HTML(即不通过 iframe 或其他方式)。”

    无论如何,您只需要使用某种数组或对象来保存弹出窗口的所有变量。您绝对不应该依赖 JavaScript window 对象,因为存储在那里的任何内容都是真正的全局的,并且可能被页面上运行的任何数量的其他脚本覆盖或以其他方式篡改。你应该为你的应用程序创建一个命名空间,如果你还没有这样做的话,并且在这个命名空间中存储任何东西:

    var MyAwesomeNamespace = MyAwesomeNamespace || {};
    
    MyAwesomeNamespace.foo = "bar";
    

    名字无关紧要;只需选择世界上其他任何人都不太可能使用的独特的东西,比如您组织的名称。

    一旦你有了这个,那么就像我说的,你会想要使用一个数组或一个对象。你选择哪一个取决于你想如何处理它。使用数组,您需要通过一些整数索引来挑选值。例如,如果您的弹出窗口是通过 for 循环呈现的,您可以为它们分配一个包含此索引的 id 或 data-* 属性,然后使用它从数组中选择正确的项目。

    如果事情比这更随机,您可能只想通过弹出窗口上的某些属性(例如其 id)使用对象和键:

    MyAwesomeNamespace.PopupVariables[popup.getAttribute(id)];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2023-01-05
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      • 2019-07-24
      相关资源
      最近更新 更多