2016-11-08 6 views
0

問題は、ルートを特定の状態に変更するたびにchatControllerを持っていて、毎秒発火させる必要がありますが、終了すると毎回関数を呼び出す必要があることです、on enterコントローラコール関数angularJS

$scope.stop = $interval(yourOperation, 1000); 

    var dereg = $rootScope.$on('$locationChangeSuccess', function() { 
    $interval.cancel($scope.stop); 
    dereg(); 
    }); 


    function yourOperation() { 
    console.log('$location', $location.$$url)  
    console.log('test'); 
    } 

作品罰金、すべてが単一実行したときに、コントローラの変更を停止します:コントローラ私は停止する必要があります()と私はchatControllerに戻ってきたとき、私は()

私のコードを再起動する必要がありますしかし、もし私が戻ってきたら、ng-init()関数を試してみましたが、コントローラーが最初に起動するだけです。ローラー。

+0

ベストな方法は、状態を保存するために「サービス」を使用することです。 – Rishabh

+0

はコントローラがまったく再初期化されていますか?あなたの州の設定とURLを –

答えて

1

1]を、それが状態である場合、あなたはあなたが戻っ状態

ここ
$scope.$on('$ionicView.enter',function(){  
     $scope.callingFunctionName(); 
}); 

にあなたはapp.js状態の宣言

に次の属性を追加する必要がありますたびに関数を呼び出すには、以下のイベントを使用することができます
cache: false 

2] modalを使用している場合は、コントローラーが自動的に初期化されます。

だけで、次のような関数を呼び出す必要があります -

$scope.callingFunctionName(); 
+0

の間で切り替えることを示してくれてありがとう、本当に助けて、私はちょうど$ ionicView.Enter関数と作業にループコードを移動! $の範囲( '$ ionicView.enter'、関数(){ $ scope.stop = $間隔(yourOperation、1000)に$; $ rootScope( '$ locationChangeSuccess' に$、機能 するvar DEREG = (){ $ interval.cancel($ scope.stop); dereg(); }); }); –

+0

@ Aletz Morgan ようこそ –

0

。このコードは、コントローラでなければなりません

// .... controller 
 

 

 
$scope.stop = $interval(yourOperation, 1000); 
 
    function yourOperation() { 
 
     console.log('hi') 
 
    } 
 

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