好的,这是场景。我在mvc app中有一个局部视图,它被渲染为一个kendo弹出窗口内容。现在,我需要创建一个变量(它是数组),我可以从这个局部视图脚本中的任何方法访问它,但它应该从这个弹出窗口中不可见。原因是我需要在其中存储此特定弹出窗口的数据,并且可能有几个这样的弹出窗口。我怎样才能做到这一点?
答案 0 :(得分:0)
声明窗口时,可以为此设置变量:
var myWindow = $("#window");
myWindow[0].myVariable = [1,2,3];
答案 1 :(得分:0)
为了获得更好的答案,你应该尝试尽可能地提出问题。假设知道剑道,意味着只有那些熟悉剑道的人才能回答(至少很容易),而这实际上只是你使用剑道的事实。更好的是说“我有一个模态窗口,显示在同一页面上呈现的HTML(即不通过iframe或其他东西)。”
无论如何,你只需要使用某种数组或对象来保存弹出窗口的所有变量。您绝对不应该依赖JavaScript window
对象,因为存储在那里的任何内容都是真正全局的,并且可能被页面上运行的任何其他脚本覆盖或以其他方式篡改。您应该为您的应用程序创建一个命名空间(如果您还没有这样做),并在该命名空间中存储任何内容:
var MyAwesomeNamespace = MyAwesomeNamespace || {};
MyAwesomeNamespace.foo = "bar";
这个名字并不重要;只选择世界上任何其他人都不太可能使用的独特内容,例如您组织的名称。
一旦你有了这个,就像我说的那样,你会想要使用一个数组或一个对象。您选择哪种方法取决于您希望如何处理它。使用数组,您需要通过某个整数索引选择值。例如,如果弹出窗口是通过for循环呈现的,则可以为它们分配包含此索引的id或data- *属性,然后使用该属性从数组中选择正确的项目。
如果事情比那更随意,你可能只想在弹出窗口上的某个属性中使用一个对象和键,就像它的id:
MyAwesomeNamespace.PopupVariables[popup.getAttribute(id)];