2016-04-14 11 views
1

Ich verstehe nicht, wofür die Leute angular $ digest() verwenden. Können Sie mir bitte ein einfaches Beispiel geben?

+0

Sie sollten nicht $() im Produktionscode verdauen verwenden. Es kann notwendig sein (obwohl $ apply() den gleichen Effekt hat), wenn Unit-Testing-Direktiven verwendet werden. –

Antwort

2

Grundsätzlich löst $digest() den Digest-Zyklus (Eval Watchers und Render-Ansicht) in Angular aus. Sie sollten dies vermeiden, bevorzugen Sie stattdessen $applyAsync(). Dies kann nützlich sein, wenn Sie einige Daten synchron aktualisieren und Angular über diese Änderungen bemerken möchten.

Für eine gute Erklärung, würde ich dieses Blog-Post vorschlagen: http://www.sitepoint.com/understanding-angulars-apply-digest/

0

Wenn Sie einem Ereignis einen Rückruf zugeordnet haben, der außerhalb des Bereichs von angular liegt; angular hat keine Ahnung, wann diese Funktion läuft/endet, so dass der Digest-Zyklus nie ausgeführt wird. (Zum Beispiel in Mausevents eine Richtlinie)

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(); 
}; 

Aufruf verdauen $ oder $ anwenden Winkel sagt Bindungen zu aktualisieren und alle Uhren feuern.

Ich hoffe es hilft.

Verwandte Themen