angularjs从外角重定向

时间:2013-05-08 21:02:24

标签: javascript angularjs

我有一个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未定义所以我一定做错了。

3 个答案:

答案 0 :(得分: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");

答案 1 :(得分:4)

这是我如何解决这个问题的。这将允许您从角度外部重定向角度。

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

$('html')应该是你的根角度元素(设置ng-app的地方)

答案 2 :(得分:0)

以下是我如何解决它,我有一个vanilla Javascript函数:

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

我在angular(应用程序运行)中覆盖:

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

希望这有帮助。