【问题标题】:I having issues with drawing multiple Amcharts using Angularjs with a single directive我在使用带有单个指令的 Angularjs 绘制多个 Amcharts 时遇到问题
【发布时间】:2015-08-10 17:40:14
【问题描述】:

amCharts with AngularJS 提供硬编码图表名称的解决方案。

我的问题是如何参数化 chartDiv 的值?我想在模板和 makeChart 调用中将值 od chartDiv 作为参数传递以创建图表。

【问题讨论】:

    标签: angularjs amcharts


    【解决方案1】:

    我将代码from here 稍加调整:我添加了scope.chartId = attrs.chartId,然后我制作了模板和AmCharts.makeChart 都依赖于chartId

    您可以在下面找到代码,here 是一个 JSFiddle。

    HTML

    <div>       
        <my-elem chart-id="my-custom-id"></my-elem>    
    </div>
    

    JS

    var myapp = angular.module('myModule', []);
    
    myapp.directive('myElem',
       function () {
           return {
               restrict: 'E',
               replace:true,
               template: '<div id="{{chartId}}" style="min-width: 310px; height: 400px; margin: 0 auto"></div>',
               link: function (scope, element, attrs) {
                    scope.chartId = attrs.chartId;
    
                    var chart = false;
    
                    var initChart = function() {
                      if (chart) chart.destroy();
                      var config = scope.config || {};
                       chart = AmCharts.makeChart(scope.chartId, {
                    "type": "serial",
                    "theme": "none",
                    "marginLeft": 20,
                    "pathToImages": "http://www.amcharts.com/lib/3/images/",
                    "dataProvider": [{
                        "year": "1950",
                        "value": -0.307
                    }, {
                        "year": "1951",
                        "value": -0.168
                    }, {
                        "year": "1952",
                        "value": -0.073
                    }, {
                        "year": "1953",
                        "value": -0.027
                    }, {
                        "year": "1954",
                        "value": -0.251
                    }, {
                        "year": "1955",
                        "value": -0.281
                    }, {
                        "year": "1956",
                        "value": -0.348
                    }, {
                        "year": "1957",
                        "value": -0.074
                    }, {
                        "year": "1958",
                        "value": -0.011
                    }, {
                        "year": "1959",
                        "value": -0.074
                    }, {
                        "year": "1960",
                        "value": -0.124
                    }, {
                        "year": "1961",
                        "value": -0.024
                    }, {
                        "year": "1962",
                        "value": -0.022
                    }, {
                        "year": "1963",
                        "value": 0
                    }, {
                        "year": "1964",
                        "value": -0.296
                    }, {
                        "year": "1965",
                        "value": -0.217
                    }, {
                        "year": "1966",
                        "value": -0.147
                    }, {
                        "year": "1967",
                        "value": -0.15
                    }, {
                        "year": "1968",
                        "value": -0.16
                    }, {
                        "year": "1969",
                        "value": -0.011
                    }, {
                        "year": "1970",
                        "value": -0.068
                    }, {
                        "year": "1971",
                        "value": -0.19
                    }, {
                        "year": "1972",
                        "value": -0.056
                    }, {
                        "year": "1973",
                        "value": 0.077
                    }, {
                        "year": "1974",
                        "value": -0.213
                    }, {
                        "year": "1975",
                        "value": -0.17
                    }, {
                        "year": "1976",
                        "value": -0.254
                    }, {
                        "year": "1977",
                        "value": 0.019
                    }, {
                        "year": "1978",
                        "value": -0.063
                    }, {
                        "year": "1979",
                        "value": 0.05
                    }, {
                        "year": "1980",
                        "value": 0.077
                    }, {
                        "year": "1981",
                        "value": 0.12
                    }, {
                        "year": "1982",
                        "value": 0.011
                    }, {
                        "year": "1983",
                        "value": 0.177
                    }, {
                        "year": "1984",
                        "value": -0.021
                    }, {
                        "year": "1985",
                        "value": -0.037
                    }, {
                        "year": "1986",
                        "value": 0.03
                    }, {
                        "year": "1987",
                        "value": 0.179
                    }, {
                        "year": "1988",
                        "value": 0.18
                    }, {
                        "year": "1989",
                        "value": 0.104
                    }, {
                        "year": "1990",
                        "value": 0.255
                    }, {
                        "year": "1991",
                        "value": 0.21
                    }, {
                        "year": "1992",
                        "value": 0.065
                    }, {
                        "year": "1993",
                        "value": 0.11
                    }, {
                        "year": "1994",
                        "value": 0.172
                    }, {
                        "year": "1995",
                        "value": 0.269
                    }, {
                        "year": "1996",
                        "value": 0.141
                    }, {
                        "year": "1997",
                        "value": 0.353
                    }, {
                        "year": "1998",
                        "value": 0.548
                    }, {
                        "year": "1999",
                        "value": 0.298
                    }, {
                        "year": "2000",
                        "value": 0.267
                    }, {
                        "year": "2001",
                        "value": 0.411
                    }, {
                        "year": "2002",
                        "value": 0.462
                    }, {
                        "year": "2003",
                        "value": 0.47
                    }, {
                        "year": "2004",
                        "value": 0.445
                    }, {
                        "year": "2005",
                        "value": 0.47
                    }],
                    "valueAxes": [{
                        "axisAlpha": 0,
                        "inside": true,
                        "position": "left",
                        "ignoreAxisWidth": true
                    }],
                    "graphs": [{
                        "balloonText": "[[category]]<br><b><span style='font-size:14px;'>[[value]]</span></b>",
                        "bullet": "round",
                        "bulletSize": 6,
                        "lineColor": "#d1655d",
                        "lineThickness": 2,
                        "negativeLineColor": "#637bb6",
                        "type": "smoothedLine",
                        "valueField": "value"
                    }],
                    "chartScrollbar": {},
                    "chartCursor": {
                        "categoryBalloonDateFormat": "YYYY",
                        "cursorAlpha": 0,
                        "cursorPosition": "mouse"
                    },
                    "dataDateFormat": "YYYY",
                    "categoryField": "year",
                    "categoryAxis": {
                        "minPeriod": "YYYY",
                        "parseDates": true,
                        "minorGridAlpha": 0.1,
                        "minorGridEnabled": true
                    }
                });
    
    
                    };
                    initChart();
    
             }//end watch           
           }
       });
    

    【讨论】:

    • 感谢 Pauan 的回答它确实适用于字符串。但是,如果我传递一个角度表达式,例如
      图表是不可见的。虽然我可以看到图表对象已创建。您还有其他建议吗?
    • 如果它自动为你生成一个 ID 会怎么样?
    • ,是的,自动生成的 ID 可以工作。唯一的标准是它在页面中的其他图表中应该是唯一的。我在同一页面上绘制多个仪表。我的代码在这里jsfiddle.net/abhi0909/fsn0j03k
    • 好吧,在这种情况下,纳塔尼尔的回答对你有用吗?它使用唯一的 ID,因此您可以在同一页面上拥有多个图表。
    【解决方案2】:

    使用模块 https://github.com/natanielpaiva/angularAmChart

    项目示例 https://github.com/natanielpaiva/angularAmChartSimples

    简单:

    在 Javascript 中:

    $scope.objectLiveAmchart = { type:serial, ... }

    【讨论】:

    • 感谢 Pauan 的帮助。如何将 JSON 对象传递给数据提供者,而不是在指令中硬编码值。
    猜你喜欢
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多