【问题标题】:Javascript Error $(...).dxChart is not a functionJavascript 错误 $(...).dxChart 不是函数
【发布时间】:2015-06-27 01:36:33
【问题描述】:

我正在尝试在 ASP.NET MVC 项目(使用 DevExpress)中显示带有 jQ​​uery 绑定的 dxChart。所以我在 rootLayout 中包含了必要的脚本:

<script src="@Url.Content("~/Scripts/jquery-1.10.2.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/bootstrap.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/knockout-3.0.0.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/globalize.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/dx.chartjs.js")" type="text/javascript"></script>

然后我在局部视图中添加了 div 标签和绑定脚本:

<div id='chartContainer'></div>
<script>
    $(function() {
    var dataSource = @Html.Raw(Model.RepartitionDesRdvs);
        $("#chartContainer").dxChart({
            size: {
                width: 300
            },
            dataSource: dataSource,
            commonSeriesSettings: {
                argumentField: 'Statut',
                type: 'pie'
            },
            series: [
                {
                    argumentField: "Statut",
                    valueField: "Total",
                    label: {
                        visible: true,
                        connector: {
                            visible: true,
                            width: 1
                        }
                    }
                }
            ],
            title: "Répartition des Rendez Vous",
            onPointClick: function (e) {
                var point = e.target;
                point.isVisible() ? point.hide() : point.show();
            }
        });
    });
</script>

视图中没有显示任何内容,我收到此错误:

TypeError: $(...).dxChart is not a function

我错过了什么?

【问题讨论】:

  • 该位置是否存在 dx.chartjs.js?如果您检查浏览器的开发人员工具,您将能够看到已加载的脚本
  • 根据 DevExpress 站点的输入 - To use DevExtreme data visualization widgets, reference the following libraries on your page. jQuery version 2.0.1+ (but 1.10.0+ for IE 8)js.devexpress.com/Documentation/Howto/Data_Visualization/Basics/…
  • 您的项目中似乎不存在 chartjs 库。您可以尝试使用 CDN 脚本cdn3.devexpress.com/jslib/14.2.6/js/dx.chartjs.js 而不是本地的 dx.chart.js 文件。
  • @Sergey 我试过它有同样的效果。实际上,当我检查页面源并进入 dx.chartjs.js 文件时,我可以访问它并查看其内容
  • 确保将代码放在主库之后。首先,您应该将jQueryglobalizedx.chart.js 附加到页面。接下来,添加一个初始化dxChart()的代码。

标签: jquery asp.net-mvc devexpress devexpress-mvc devextreme


【解决方案1】:

我也遇到了这个问题,使用 Dx 版本:15.2.5 和 JQuery 2.1.4 & 2.2.0。这个问题让我想到了这个。正如建议的那样,我将我的 > 标签重新指向了以下 CDN。

<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-2.1.4.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/globalize/0.1.1/globalize.min.js"></script>
<script type="text/javascript" src="http://cdn3.devexpress.com/jslib/15.2.5/js/dx.chartjs.js"></script>

这似乎确实有效,因此我手动下载了 CDN 文件并使用 Beyond Compare 进行比较。令人惊讶的是,BC 显示了 jquery 的差异。将本地文件的内容替换为CDN版本后,我再次尝试,发现错误仍然存​​在。

TypeError: $(...).dxChart is not a function

为我解决的问题是将 chartjs 放在 DevExpress MVC 脚本之后。

    <link href="@Url.Content("~/Content/dx.common.css")" rel="stylesheet" type="text/css" />
    <link href="@Url.Content("~/Content/dx.light.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-2.1.4.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/globalize.min.js")"></script>
    <script src="@Url.Content("~/Scripts/angular.js")"></script>
    <script src="@Url.Content("~/Scripts/angular-sanitize.js")"></script>
    @Html.DevExpress().GetStyleSheets(
...
    )
    @Html.DevExpress().GetScripts(
...
    )

    <script src="@Url.Content("~/Scripts/dx.chartjs.js")"></script>
    <script src="@Url.Content("~/Scripts/custom.js")" type="text/javascript"></script>

希望有帮助!

【讨论】:

  • 问题是@Html.DevExpress().GetScripts(...) 为 DevExpress 扩展生成了一个自定义 jquery,因此将 &lt;script src="@Url.Content("~/Scripts/dx.chartjs.js")"&gt;&lt;/script&gt; 放在扩展助手覆盖它之前:这是一张类似的票:devexpress.com/Support/Center/Question/Details/T330073
猜你喜欢
  • 2012-04-07
  • 1970-01-01
  • 2011-06-20
  • 2020-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多