动态添加脚本部分 - ReferenceError

时间:2013-11-26 16:25:52

标签: javascript jquery asp.net-mvc-4 amcharts

我正在创建一个包含多个图表(使用AmCharts),网格等的页面。每个图表都有自己的视图。我注意到当我尝试在每个视图上链接amcharts.js时,如果此页面上有两个以上的图表,则不会绘制图表。我决定将这个链接放在主页面中,对于所有图表都是通用的,它们工作正常,但现在我只能通过使用url调用action来看到它们。我尝试动态链接它们,如下所示:

     $(document).ready(function () {
if ($("#amchartsLib").length == 0) {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "/Scripts/amcharts/amcharts.js";
script.id = "amchartsLib";
document.body.appendChild(script);
DrawChart(); 

不幸的是 - 当我实例化图表时,当firebug命中行时(新的AmCharts.AmPieChart();)我得到了ReferenceError:未定义Amcharts。我究竟做错了什么?我可以看到amcharts.js文件已正确添加到HTML文档中。

2 个答案:

答案 0 :(得分:3)

看起来你可能要等到加载脚本文件

$(document).ready(function () {
    if ($("#amchartsLib").length == 0) {
        var script = document.createElement("script");
        script.type = "text/javascript";
        script.src = "/Scripts/amcharts/amcharts.js";
        script.id = "amchartsLib";
        document.body.appendChild(script);
        script.onload = function () {
            DrawChart();
        }
    }
})

答案 1 :(得分:1)

我会在你的_Layout.cshtml文件中调用脚本引用(假设你正在使用它),然后使用Sections来呈现其他脚本标记。像这样:

布局 - 头部(缩写)

<head>
    <script src="@Url.Content("~/Scripts/amcharts/amcharts.js")"></script>
</head>

布局 - 底部

@RenderSection("BottomScripts", false) // false = section not required

查看(个人)

@section BottomScripts
{
   // your chart script here
}