angular의 $scope의 $apply $eval $digest

1255 단어
$apply:function(expr){
    try{
        beginPhase('$apply');
        try{
            return this.$eval(expr);
        }
        finally{
            clearPhase();
        }
    }
    catch(e){
        $exceptionHander(e);
    }
    finally{
        try{
            $rootScope.$digest();
        }
        catch(e){
            $exceptionHander(e);
            throw e;
        }
    }
}

$apply에 대해서는 $eval() $rootScope.$를 내부적으로 호출했습니다.digest()
$eval:function(expr,locals){
    //   $phase   
    return $phase(expr)(this,locals);
}

digest 방법
 

processes all of the watchers of the current scope and its children, because a watcher's listener

can change the model,the digest keeps calling the watchers until no more listeners are firing.

this means that it is possible to get into an infinite loop , the function will throw 'maximum 

iteration limit exceeded' if the number of iteration exceeds 10;


usually you don't call digest() directly in controllers or in directive .

instaad, you should call $apply ;

 
  $digest  watchers  , watcher  , 。  $digest  ,  $apply .
//   
$digest:function(){
    //  
    
    
}

좋은 웹페이지 즐겨찾기