Angularjs 在这种情况下,为什么我需要$timeout来更改位置?
我有以下代码:Angularjs 在这种情况下,为什么我需要$timeout来更改位置?,angularjs,Angularjs,我有以下代码: angular.module('DemoApp') .controller('NavbarCtrl', ['$scope', '$rootScope', '$location', '$timeout', function($scope, $rootScope, $location, $timeout) { $scope.logout = function() { $rootScope.user = null; $location.path("/
angular.module('DemoApp')
.controller('NavbarCtrl', ['$scope', '$rootScope', '$location', '$timeout', function($scope, $rootScope, $location, $timeout) {
$scope.logout = function() {
$rootScope.user = null;
$location.path("/login");
};
}]);
问题是,当调用注销时,位置不会改变。但是,以下代码可以工作(请注意$timeout的使用):
有人能告诉我这是为什么吗
编辑:
HTML如下所示,位于NavbarCtrl控制器元素内:
<a href="#" ng-click="logout()"><i class="fa fa-sign-out"></i><br/>Abmelden</a>
错误的地方在于HTML:href=“#”
导致位置更改,$location.path()
无法再次更改该位置。将HTML更改为href=“”
将不再需要使用$timeout
错误的是HTML:href=“#”
会导致位置更改,而$location.path()
无法再次更改该位置。将HTML更改为href=“”
将不再需要使用$timeout
错误的是HTML:href=“#”
会导致位置更改,而$location.path()
无法再次更改该位置。将HTML更改为href=“”
将不再需要使用$timeout
错误的是HTML:href=“#”
会导致位置更改,而$location.path()
无法再次更改该位置。将HTML更改为href=“”
将不再需要使用$timeout
$timeout with no delay用作黑客攻击,它将触发$digest循环^agree。我会尝试用$scope触发摘要循环。$apply()在您的$location.path(“/login”)调用之后。scope apply会导致一个异常,表示摘要已在进行中$timeout with no delay正在用作hack,它会触发$digest循环^agree。我会尝试用$scope触发摘要循环。$apply()在您的$location.path(“/login”)调用之后。scope apply会导致一个异常,表示摘要已在进行中$timeout with no delay正在用作hack,它会触发$digest循环^agree。我会尝试用$scope触发摘要循环。$apply()在您的$location.path(“/login”)调用之后。scope apply会导致一个异常,表示摘要已在进行中$timeout with no delay正在用作hack,它会触发$digest循环^agree。我会尝试用$scope触发摘要周期。在$location.path(“/login”)调用之后,$apply()会导致一个异常,表明摘要已经在进行中
<a href="#" ng-click="logout()"><i class="fa fa-sign-out"></i><br/>Abmelden</a>