我有一个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未定义所以我一定做错了。
答案 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();
};
希望这有帮助。