Angular指令仅在第一次起作用

时间:2014-05-08 10:07:30

标签: javascript angularjs angularjs-directive angularjs-scope

我创建了amCharts指令,它在某种程度上只是第一次起作用,第二次不会显示,直到我清除浏览器缓存。 另一个问题是它只适用于Chrome:/

这是我的代码:

.directive('amGraph', function(){
    return {
        restrict: 'E',
        replace: true,
            scope: {
            getArchiveData: '='
        },
        template: '<div id="chartdiv"></div>',
        link: function (scope, element, attrs){

            scope.$watch('getArchiveData', function(data){

                 var chart = false;

                 var initChart = function(){
                     if (chart) chart.destroy();

                     chart = new AmCharts.makeChart("chartdiv", {
                          ...
                     });
                 };

                 initChart();

            });
        }
     }
 })

这是HTML:

<div ng-controller="dataCtrl">
<am-graph get-archive-data="getData"></am-graph>
</div>

1 个答案:

答案 0 :(得分:0)

它可以在这里工作:http://jsfiddle.net/tkX89/可能是你写的HTML错了。没有角度问题。

虽然提示:

replace: true 

将使用分配的模板替换您的指令标记。小心。

PS:使用工厂获取数据非常棒。保持在轨道上!!