4

我有一个 ng-app 和一个 ng-view。该应用程序有多个控制器。

从外部角度,遗留 JS 代码,我想重定向某个控制器。

var e = document.getElementById('mApp');
var scope = angular.element(e).scope();

scope.$apply(function() { scope.$location.path("/account/login"); });

我试过 $scope.$location 它告诉我 $location 是未定义的,所以我一定做错了什么。

4

3 回答 3

14

$location是一个 Angular 服务,它不是 $scope 的属性(除非你将它添加到其他地方)。要离开$location您的应用程序,您可以使用该$injector服务 - 如下所示:

var e = document.getElementById('mApp');
var $injector = angular.element(e).injector();

var $location = $injector.get('$location');
$location.path("/account/login");
于 2013-05-08T21:46:13.723 回答
4

这是我解决这个问题的方法。这将让您从角度外部重定向角度。

$('html').injector().get('$location').path("/where/you/want/to/go");
$('html').scope().$apply();

$('html')应该是您的根角度元素(设置 ng-app 的位置)

于 2014-04-01T04:12:43.963 回答
0

这是我解决它的方法,我有一个香草 Javascript 函数:

function navigateTo(url) {
    location.href = url;
}

我用角度覆盖(应用程序运行):

$window.navigateTo = function (url) {
   $location.url(url);
   $rootScope.$applyAsync();
};

希望这可以帮助。

于 2018-05-07T11:46:32.230 回答