2013-04-08 26 views
6

Bir çocuk için $scope (yalıtılmış mı değil mi) $scope.$apply parrent kapsamı uygulanmadan yapılabilir mi?Çocuk kapsamı, ebeveyn uygulanmadan geçerli olabilir

Üst kapsamda (önbelleklenmesi zor) bazı pahalı hesaplamalar var ve hesaplamayı yeniden işlemek için köşeli olmaya ihtiyacım yok. Örneğin

:

<div ng-controller="ParentController"> 
{{ expensiveFunction() }} 
    <div directive> 
    <h1 ng-click="applyChildScopeOnly()">Click {{ value }}</h1> 
    </div> 
    <div directive> 
    <h1 ng-click="applyChildScopeOnly()">Click {{ value }}</h1> 
    </div> 
<button ng-click="applyChildrenScope()"/> <!-- apply to children scope only --> 
</div> 

direktif:

module.directive('directive', ['$document','$rootScope', function ($document,$rootScope) { 

    return{ 
    restrict:'AE', 
    scope:{}, 
    link:function($scope, element, attrs){ 
     $scope.applyChildScopeOnly = function(){ 
      $scope.$apply(); // don't apply changes to $parent scope 
     }; 

    } 
    } 
}]); 

cevap

7

Sen yeniden değerlendirmek geçerli kapsamda saatler ve tüm çocuklar için $scope.$digest() yerine $scope.$apply() çağırabilir. $scope.$digest() numaralı telefonun aranması, herhangi bir üst kapsamdaki herhangi bir saati değerlendirmeyecektir.

Bir yan not olarak, $scope.$apply(), sahne arkasında $rootScope.$digest()'u çağırır. Burada

diğer bilgiler:. http://docs.angularjs.org/api/ng $ rootScope.Scope

+0

vay .. Dint biliyorum! – ganaraj

İlgili konular