即使在使用$ scope.apply之后,也无法使用$ location服务更改路径

时间:2016-12-02 12:10:31

标签: javascript angularjs angularjs-scope angularjs-ng-click

我想知道为什么即使在我使用 -

之后我也无法使用位置服务更改我的视图
$scope.$appy() or $scope.apply;

我在发布问题之前做过研究。我得到了类似问题的结果,但没有一个符合我的情况。

我不想使用计时器功能来实现与链接中指定的相同,因为它的CPU密集型: angularjs path not changing even after apply

我的应用程序中的奇怪行为是我可以使用其他脚本中的以下代码更改位置:

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

OR

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

哪种方法没有任何问题。

唯一的区别是:上面的代码在没有任何事件触发器的情况下执行时工作正常,但如果我在按钮点击事件上使用上面的代码,则需要空白页面:

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

任何帮助都会有所帮助。

2 个答案:

答案 0 :(得分:0)

尝试在$ scope.apply()中封装调用,如下所示:

href

答案 1 :(得分:0)

如果您尝试在执行异步执行后执行代码(当注销发生时等) - 您的Angular引擎可能不知道操作完成。

将scope.apply与具体操作结合使用。还要注意摘要过程,这可能会引发异常

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