$ scope.apply()运行两次

时间:2015-10-12 06:09:26

标签: angularjs angularjs-scope

我是angularjs的新手

我在" $scope.apply()"中使用了setTimeout功能,但似乎

我的$scope.apply()正在运行两次。

setTimeout(function () {


    $scope.$apply(function () {


        $scope.proofName = cookie.getCookieId('assetName');



    });


}, 3000)

请帮助我避免运行$ scope。$ apply()两次。感谢

2 个答案:

答案 0 :(得分:1)

您可以使用setTimeout代替$timeout。在这种情况下,您不需要执行$apply,因为摘要周期将在指定的延迟后运行。

Documentation

$timeout(function () {
    $scope.proofName = cookie.getCookieId('assetName');
}, 3000);

答案 1 :(得分:0)

以下是演示http://jsfiddle.net/d9yax4gd/ 你可以简单地删除$ scope。$ apply(),因为它在内部触发$ digest循环,$ time在内部使用它,所以以角度方式使用,否则它会抛出$ digest正在进行的错误,或者你会发现它被称为多个时间

var app = angular.module('myapp', []);
app.controller('ctrl', function($scope, $timeout){
$scope.proofName = '';
$timeout(function () {
    $scope.proofName = cookie.getCookieId('assetName');    
}, 3000);
});

希望这能帮到你