AngularJS - 来自各种控制器的聚合值

时间:2013-11-15 16:55:09

标签: angularjs

我正在构建一个应用程序,汇总Facebook GRAPH live提供的数据。具体来说,我想从各种Facebook页面中读取喜欢的数量并显示喜欢的总数。此信息每5秒更新一次。我已设法从各个页面提取并更新信息,但无法弄清楚如何将这些值一起添加并显示总数。这是标记:

<div ng-controller="TotalController">
    <span ng-controller="UpdateController" ng-init="init('331288023558058','fan_count')">{{output}}</span>
    <span ng-controller="UpdateController" ng-init="init('20531316728','fan_count')">{{output}}</span>
    <span>{{outputTotal}}</span>   
</div>

以下是它的脚本:

var app = angular.module('app', []);

app.controller('UpdateController', function($scope, $http) {

$scope.init = function(id, item) {
    $scope.id = id;
    $scope.item = item;        

    //retrieve data on the initial load
    $scope.updateData();

};

$scope.updateData = function() {

    $http({
        method: 'JSONP',
        url: 'https://graph.facebook.com/fql?q=select ' + $scope.item + ' from page where page_id = ' + $scope.id + '&callback=JSON_CALLBACK'
    }).success(function(data) {

        //load the new value
        var currentValue = data['data'][0][$scope.item];

        //output new value to view
        $scope.output = currentValue;

    }).error(function(data, status) {
        console.log("error " + data + " " + status);
    });
};

var timer = setInterval(function() {
    $scope.$apply($scope.updateData);
}, 5000);

});

我已经尝试设置一个控制器,它包含两个Update控制器并观察更改的范围,但我无法从两个子控制器中获取数据。

我的理解是,最好的方法是设置聚合值的服务,然后将此服务注入第三个“Total”控制器,但我无法实现这一点。 。解决这个问题的最佳方法是什么?我对控制器的处理完全错了吗?

0 个答案:

没有答案