2011-06-29 37 views
0

有沒有辦法在JavaScript中動態獲取變量的處理程序?我認爲這是沒有意義的,所以這就是我想要做的。如何在JavaScript中傳遞參數名稱?

我使用JQuery Flot在我的web應用程序中生成圖表。一切工作正常,直到我有兩個圖在同一頁。

我使用c#從數據庫中獲取數據,並將其轉換爲JavaScript數組,然後像這樣寫入頁面。

HTML/C#:

@{ 
     KII.Models.JsonPerformGraphData items = new KII.Models.JsonPerformGraphData(); 

     foreach (KII.Models.PerformanceGraphItem item in Model.PerformanceGraphItems) 
     { 
      items.Add(item); 
     } 

     <script type="text/javascript"> 

     @Html.Raw("var pgdata"+Model.Id+" = ") @Html.Raw(items.toJson()) ; 

     </script> 
    } 

然後,我調用一個方法上的文檔準備繪製圖形

的JavaScript:

if ($(".PerformanceGraph")) { 
     $(".PerformanceGraph").livequery(function() { 
      //Display the graph for risk and reward. 
      var options = { series: { 
       bars: { show: true, barWidth: 0.45, align: "center" } 
      }, 
       legend: { 
        show: true, position: "ne", backgroundOpacity: 0, container: $("#PerformanceGraphLegend") 
       }, 
       multiplebars: true 
      }; 


      var dataArray = $(this).attr('data-array');//I get the name of the variable as String. 
      $.plot($(".PerformanceGraph"), pgdata, options); 
     }); 
    } 

pgdata從JavaScript必須從HTML /匹配"var pgdata"+Model.Id+" C#。

如何獲取HTML/C#代碼吐出到HTML的變量?

+1

你不能只輸出這樣的事情呢? 'plotMyJson({json from c#...});'然後在js中創建一個'plotMyJson'函數? – Dogbert

回答

1

您可以將變量名連接在一起並「eval」它。

http://www.w3schools.com/jsref/jsref_eval.asp

+1

提示w3schools警察! –

+1

Neee Narrr Neeee Narrr – CResults

+0

將其更改爲'$ .plot($(this),eval(dataArray),options);'工作。我認爲eval被認爲是邪惡的。 – Omar

1

爲什麼不是這樣?

<script type="text/javascript"> 
var pgdata = {}; 
@Html.Raw("pgdata["+Model.Id+"] = ") @Html.Raw(items.toJson()) ; 
</script> 

,然後在JavaScript中你只需在在PGDATA鍵遍歷:

for (k in pgdata) { 
    $.plot($(".PerformanceGraph"), pgdata[k], options); 
} 
+0

HTML/C#代碼被執行幾次。我想'var pgdata = {};'會在每次執行後清除數組。 – Omar

+0

仍然,這種一般的方法是你在找什麼。在之前的地方實例化和分配pgdata,或者做一些類似'if(!('pgdata'in window)){pgdata = {}; }' – digitalbath