2016-11-08 5 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

Контроллер повторно инициализирован вообще? показать конфигурацию состояний и URL-адреса для переключения между –

ответ

1

1] Если это состояние, то вы можете использовать следующие события, чтобы вызвать функцию каждый раз, когда вы обратно в состояние

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

Здесь вам нужно добавить следующий атрибут в app.js государственной декларации

cache: false 

2] Если вы используете модальный, то контроллер автоматически получит инициализацию.

просто нужно вызвать функцию как следующее -

$scope.callingFunctionName(); 
+0

Спасибо, действительно помогите, я просто переместил код цикла в функцию $ ionicView.Enter и работает! $ $ на сферу ('$ ionicView.enter', функция() { $ scope.stop = $ интервал (yourOperation, 1000);. вар dereg = $ rootScope $ на ('$ locationChangeSuccess', функция.() { $ interval.cancel ($ scope.stop); dereg(); }); }); –

+0

@ Aletz Morgan welcome –

0

привет этот код должен быть в контроллере

// .... controller 
 

 

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

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

Смежные вопросы