0

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

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

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

在这个 RenderPartial 中,我正在创建一个图表

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

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

4

1 回答 1

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();
于 2013-10-05T00:27:07.617 回答