RenderPartial循环中的jQuery变量

时间:2013-10-05 00:21:49

标签: jquery

我确信有一个简单的答案,但我找不到它。)

我有一个页面,它有一个循环,在这个循环中它调用RenderPartial

foreach(var thing in Things)
{
    Html.RenderPartial("Graph", thing)
}

在此RenderPartial中,我正在创建图表

var myGraph = new Graph(various things here)
myGraph.Draw();

问题是,现在我调用RenderPartial的页面有一堆图形对象,都是myGraph,我无法专门解决它们中的任何问题。如何构造复合变量名称,以便每个图形具有不同的名称?每次调用RenderPartial只创建一个图形,因此数组不起作用。

1 个答案:

答案 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();