我有一个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();
};