我确信有一个简单的答案,但我找不到它。)
我有一个页面,它有一个循环,在这个循环中它调用RenderPartial
foreach(var thing in Things)
{
Html.RenderPartial("Graph", thing)
}
在此RenderPartial中,我正在创建图表
var myGraph = new Graph(various things here)
myGraph.Draw();
问题是,现在我调用RenderPartial的页面有一堆图形对象,都是myGraph,我无法专门解决它们中的任何问题。如何构造复合变量名称,以便每个图形具有不同的名称?每次调用RenderPartial只创建一个图形,因此数组不起作用。
答案 0 :(得分:0)
“jQuery变量”
这些不是jQuery变量,它们是JavaScript变量。 jQuery“只是”一个JavaScript函数库,你展示的代码不包含任何jQuery使用。
“现在,我调用RenderPartial的页面有一堆图形对象,全部都是
myGraph
,我无法专门解决它们中的任何一个。”
实际上它只有一个myGraph
变量可以覆盖,所以你只能解决最后一个变量。 (并且之前的Graph
对象将被垃圾收集,因为没有对它们的引用。)
“每次调用RenderPartial时只创建一个图形,因此数组不起作用。”
我不明白为什么你认为数组不起作用。在循环之前声明它:
var myGraphs = [],
currentGraph;
...然后在循环内的RenderPartial中添加数组:
myGraphs.push(currentGraph = new Graph(...));
currentGraph.Draw();
// do any other operations on currentGraph within the loop
或者,如果不使用currentGraph
变量,您可以执行此操作:
myGraphs.push(new Graph(...));
myGraphs[myGraphs.length - 1].Draw();
无论哪种方式,在页面后面的其他代码中,您可以通过将它们作为数组元素访问来对任何或所有Graph
对象执行操作。例如,重新绘制它们:
for (var i = 0; i < myGraphs.length; i++)
myGraphs[i].Draw();