Angularjs指令 - 使用新数据刷新或重新加载

时间:2014-11-12 21:53:55

标签: angularjs angularjs-directive

我有两个angularjs指令,如下面的

<div class="well well-sm">
    <datepickcalendar processchange="getSummaryForGivenMonth(sD,eD)"></datepickcalendar>
    <barpiechart datavar="Summary"></barpiechart>
</div>

我显示一个条形图和饼图(barpiechart指令),并在顶角显示日期选择器(datepickcalender指令)。 在页面加载时,我将当前月份的数据显示为图表(来自控制器,我填充'摘要'和barpiechart的链接功能绘制图表。)

现在,当我使用日期选择器选择日期范围时,控制器会使用新值填充“摘要”,但不会刷新barpiechart。 在谷歌搜索后,我发现link()函数只被调用一次。所以barpiechart只用当月的数据绘制一次。

再次谷歌搜索几天后,我找到了一个令人耳目一新的工作解决方案 一个。填充'Summary'后,控制器函数中的$ scope.apply() 湾$ scope。$ watch在barpiechart指令的链接功能

控制器

function getSummaryForGivenMonth(sD, eD) {
        $scope.Summary = [
           ...
        ];
        $scope.$apply();
    }

指令

app.directive('barpiechart', function () {
    var directive = {};
    directive.restrict = 'E';
    directive.scope = {
        values: "=datavar",
    };
    directive.link = function ($scope, element, attributes) {
        $scope.$watch("values", function (newValue, oldValue) {
            //draw chart using values and append to element[0]
        });
    };
    return directive;
});

问题: 我是AngularJS的新手,我不知道这是否可行。

我在同一页面中还有两个图表,就像我们一样。每当我更改指令的变量时,我应该调用$ scope.apply吗?

手动调用$ scope.apply()有多少缺点(多次)?

如果我的方法不正确或效率低下,请提出其他方法。

0 个答案:

没有答案