2013-10-05 44 views
0

我敢肯定有一個簡單的答案,但我沒有找到它:)的RenderPartial循環中jQuery的變量

我有一個頁面,它有一個循環,在這個循環它調用的RenderPartial

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

在此的RenderPartial,我創建一個圖表

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

的問題是,現在我是從叫的RenderPartial頁有一堆圖形對象的,所有命名myGraph,我可以」 t解決他們中的任何一個問題cifically。我怎樣才能構造一個複合變量名,以便每個圖都有不同的名字?每次調用RenderPartial時只會創建一個圖形,因此數組不起作用。

+0

什麼是'RenderPartial'?什麼是'Html'?什麼是圖表?你正在使用的是什麼庫? – Brian

+0

@布萊恩 - 我認爲'RenderPartial'是服務器端的ASP代碼。 – nnnnnn

回答

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

無論採用哪種方式,在稍後的頁面上的其他代碼中,您都可以通過將其作爲數組元素進行訪問,對任何或所有對象執行操作。例如,重新繪製它們全部:

for (var i = 0; i < myGraphs.length; i++) 
    myGraphs[i].Draw(); 
+0

謝謝,我不知道推動語法來創建一個動態數組。很好地解決了這個問題! – ItinerantEngineer

+0

不客氣。當然,你可以說'myGraphs [myGraphs.length] = new Graph();'添加一個項目到最後,但'.push()'更好。 – nnnnnn