当我们需要在实际开发中使用$ digest()时?

时间:2016-04-14 08:41:11

标签: angularjs

我不明白人们使用angular $ digest()。 你能给我一些简单的例子吗?

2 个答案:

答案 0 :(得分:3)

基本上,$digest()触发Angular中的摘要周期(eval观察者和渲染视图)。你应该避免自己打电话,而是选择$applyAsync()。当您以异步方式更新某些数据并想要注意Angular有关这些更改时,这非常有用。

为了得到一个很好的解释,我建议这篇博文: http://www.sitepoint.com/understanding-angulars-apply-digest/

答案 1 :(得分:0)

如果你有一个回调附加到角度范围之外的事件; angular不知道该函数何时运行/结束,因此摘要周期永远不会运行。 (例如指令中的mouseevents)

app.directive('tooltip',function(){
    return{
        restrict: 'A',
        link: function(scope,element,attr){
            element.bind('mouseover',function(e){

                scope.setStyle(e);

            });
        }
    }
});


$scope.setStyle = function(e){
    $scope.style = {
        position: 'absolute',
        // some other styles
    };

    $scope.$apply();
};

调用$ digest或$ apply告诉angular更新绑定并触发任何手表。

我希望它有所帮助。