2016-09-26 13 views
1

誰でも$scope.$onの作業について説明し、$destroyはこれらの2つのコントローラでどのように機能しますか。私がルートを変更したときと同じように、別のコントローラが呼び出されると、$destroyが呼び出されるのはなぜですか? $intervalはどのように初期化されますか?私はpromiseAの下で変数として定義しましたが、まだ初期化されています。私はちょうど要件を満たすために、これらの行をコピーした誰も私がこれらのコード行を理解するのを助けることができますか?短い$scope.$onを使用して

 var myApp=angular.module('myApp',['ngRoute']); 
     myApp.controller('myController',function($scope){ 


     }); 
     myApp.controller('firstPage',function($scope,$interval){ 

      $scope.thisMessage="First Message"; 
      $scope.firstcall=function(){ 
       var promiseA=$interval(function(){ 

         console.log("First Page"); 
        },10000); 
       $scope.$on('$destroy',function(){ 
        $interval.cancel(promiseA); 
       }); 
      } 
      }); 
     myApp.controller('secondPage',function($scope,$interval){ 
      $scope.thisMessage="Second Message"; 

      $scope.thisMessage="Second Message"; 
      $scope.secondcall=function(){ 
       var promiseB=$interval(function(){ 

         console.log("Second Page"); 

       },10000); 
       $scope.$on('$destroy',function(){ 
        $interval.cancel(promiseB); 
       }); 
      } 
     }); 

     myApp.config(function($routeProvider){ 
      $routeProvider.when("/",{ 
       templateUrl:"First.html" 
       }) 
      .when("/second",{ 
       templateUrl:"Second.html" 
      }); 
     }); 

答えて

0

長い話あなたは、角の内部イベントともあなたが$emit$broadcastサービスを使用して自分自身をトリガすることができ、カスタムイベント用(サブスクライブ)のリスナーを追加することができます。 $destroy自体は、コントローラが破棄されたときにトリガされるイベントです。そのため、データを保存したい場合や、何をしたいのかを知りたい場合は、フックがあります。

Angular'sのドキュメントhereにこのような種類の情報があります。

ルートを切り替えるときに、それぞれのルートに異なるコントローラがあるということを考えれば、ルートをインスタンス化していて、もう一方を破棄します(これはリッスンしている$destroyイベントをトリガーします)。

また、イベントから退会してメモリリークや奇妙な動作を避ける方法である$offメソッドをチェックアウトすることをお勧めします。残念ながら、私はそのことについて任意のドキュメントを見つけることができませんでしたが、それは基本的に動作がどのように、あなたはこのようなイベントにサブスクライブ:

$scope.$on('customEvent', someFunction); 

そして、あなたはこのように退会:

$scope.$on('$destroy', function() { 
    $scope.$off('customEvent', someFunction); 
}); 

心に留めておくことをお$destroyリスナー内の登録を本当に解除する必要はありませんが、そうすることをお勧めします。

+0

こんにちは。どうもありがとう – evilBops

関連する問題