Angular $ scope。$适用于异步进程

时间:2015-08-06 11:54:56

标签: angularjs asynchronous scope

我正在尝试更新范围的对象。来自异步过程的新数据,在这种情况下来自facebook的数据。

如何将更改应用于html?

    var getCampaignStatistics = function () {
        for (i = 0; i < $scope.campaigns.length; i++) {

            $scope.$apply(function () {
                $scope.campaigns[i].campaignStatistics = new CampaignStatistics(delegate);
                $scope.campaigns[i].campaignStatistics.startProcess();
            });
        }
    };


    var delegate = function () {

    };

所以我有一个委托函数,每个统计过程完成后都会调用它。 我也尝试过应用这个过程,但我知道因为对facebook的异步请求而无济于事

我应该添加这个过程但是这个过程需要大量计算。 基本上,它只是在campaignStatistics中设置统计对象。在统计对象中有诸如图片计数等的参数... 在过程结束时,它调用委托函数

1 个答案:

答案 0 :(得分:0)

不确定你的委托/回调应该做什么,但我认为它也需要参数。我尝试在那里运行$ apply,因为一旦流程结束,Facebook API就会调用它。 Angular不会知道这一点,因为该进程超出了其范围。

因此,只要Facebook API准备好使用您的回调,您就必须将您的呼叫转移到$ apply to delegate,以确保它知道更新。

var getCampaignStatistics = function () {
    for (i = 0; i < $scope.campaigns.length; i++) {
        $scope.campaigns[i].campaignStatistics = new CampaignStatistics(delegate);
        $scope.campaigns[i].campaignStatistics.startProcess();
    }
};


var delegate = function (param) {
    $scope.$apply(function() {
        //your logic here
        $scope.sompeProperty = param;
    });
};