2016-11-08 37 views
0

問題是,我需要調用一個函數,每一次路線改變到一個特定的狀態,可以說我有chatController,我必須每秒開火(),但如果我退出控制器我有停止(),當我回到chatController我不得不重新啓動()在輸入控制器調用函數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'); 
    } 

工作正常運行的每一個和停止控制人變更時,但它不工作了,如果我回去了,我嘗試了ng-init()函數,但只在第一次啓動控制器時觸發,我總是需要它,當我處於特定狀態時滾筒。

+0

最好的辦法是用「服務」來保存狀態。 – Rishabh

+0

控制器是否重新初始化?顯示您的狀態配置和網址之間切換 –

回答

1

1]如果它是一個國家,那麼你可以使用下面的事件每次通話功能,當你回到狀態

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

在這裏,您可能需要在app.js狀態聲明添加下列屬性

cache: false 

2]如果你使用模態,那麼控制器將自動初始化。

只需要調用函數像下面 -

$scope.callingFunctionName(); 
+0

謝謝,真的幫助,我只是將循環代碼移動到$ ionicView.Enter函數並工作! ('$ locationChangeSuccess',$ function(){ $ scope.stop = $ interval(yourOperation,1000); var dereg = $ rootScope。$ on('$ locationChangeSuccess',function (){ $ 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); 
 
    })