0

Я задаюсь вопросом, почему я не могу изменить свою точку зрения с помощью геолокации даже после того, как я использую -

$scope.$appy() or $scope.apply; 

Я сделал исследование, прежде чем отправляя мой вопрос. Я получил результаты подобных вопросов, и ни один из них не соответствует моему сценарию.

Я не хочу использовать функцию таймера для достижения такой же, как указано в ссылке, потому что ее ресурсоемкие: angularjs path not changing even after apply

странное поведение в моем приложении, я могу изменить расположение со следующим кодом в других сценариях :

$location.path("authenticate").replace(); 
$scope.$apply(); 

ИЛИ

$location.path("authenticate").replace(); 
$scope.apply; 

Который работает отлично без каких-либо проблем.

Единственное отличие состоит в: Над кодом отлично работает, когда он запускается на выполнение без какого-либо триггера событий, но он принимает пустую страницу, если я использую выше код на события нажатия кнопки, как это:

<li data-ng-click="logout()"><a data-ng-href="#">Sign Out</a></li> 

Любая помощь будет полезно.

+0

вам нужно добавить косую черту в путь '$ location.path («/ AUTHENTICATE») " – FabioG

+0

Я попытался, что уже не повезло – Sagar

ответ

0

Если вы пытаетесь выполнить свой код после некоторого выполнения асинхронного (когда выход из системы происходит, и т.д.) - ваша Угловая двигатель не может извещение о завершении операции.

Используйте scope.apply с бетонным действием внутри. Также помните переваривать процесс, это может сгореть за исключением

$scope.$apply(function(){ 
    if(!$scope.$$phase) { 
     $location.path('authenticate'); 
    } 
}); 
+0

Хотелось бы, чтобы это сработало, но давало следующую ошибку: [INFO: CONSOLE (118)] «Ошибка: [$ rootScope: inprog] http://errors.angularjs.org/1.5.8/$rootScope/inprog?p0=%24apply – Sagar

+0

Кажется, вам также нужна дополнительная проверка того, что rootScope не находится в фазе переваривания'! $ rootScope. $$ phase'. Перед тем, как вам нужно ввести его как зависимость. – VadimB

0

Попробуйте герметизирующий вызов в пределах $ scope.apply() следующим образом:

$scope.$apply(function(){ 
    $location.path('authenticate'); 
}); 
+0

не дает ошибку : "TypeError: $ scope.apply не является функцией" – Sagar

+0

Извините, что это была ошибка с моей стороны, должна быть $ scope. $ Apply (function() {}) – CraigR8806

+0

В чем разница? Я не видел никаких изменений в определении функции. – Sagar

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