Angularjs从angular外部重定向

angularjs redirect from outside angular

本文关键字:重定向 外部 angular Angularjs      更新时间:2023-09-26

我有一个ng app和一个ng view。app有多个控制器

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

var e = document.getElementById('mApp');
var scope = angular.element(e).scope();
scope.$apply(function() { scope.$location.path("/account/login"); });

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

$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");

我是这样解决这个问题的。这将允许你从angular外部在angular中重定向。

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

$('html')应该是你的根角元素(其中ng-app设置)

我是这样解决的,我有一个普通的Javascript函数:

function navigateTo(url) {
    location.href = url;
}
我在angular (application run)中覆盖了

:

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