我的.js文件如下
routerApp.config(function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise(function ($injector, $location) {
var $state = $injector.get('$state');
var path = $location.protocol();
if (path == 'http') {
$state.go('external');
}
else {
return '/home';
}
});
$stateProvider
// HOME STATES AND NESTED VIEWS ========================================
.state('home', {
url: '/home',
templateUrl: 'routing.html'
})
.state('external', {
onEnter: function ($window) {
$window.open('http://www.google.com', '_self');
}
});
});
上面的代码在path!='http'时工作正常,它会重定向到routing.html。但是当path =='http'时,它应该调用外部状态并重定向到外部URL。这里path =='http'条件不起作用。如何在这里拨打外部网址?在州,我呼吁外部onEnter。我可以在没有OnEnter的情况下完成吗?
答案 0 :(得分:1)
这对我有用:
$urlRouterProvider.otherwise(function ($injector, $location) {
var protocol = $location.protocol();
if (protocol == 'http') {
window.open('http://www.google.com', '_self');
}
else {
return '/home';
}
});
答案 1 :(得分:0)
这有点不同,但可能这样的事情会起作用:)
$rootScope.on("$stateChangeStart", function(event, toState){
if(toState.name == 'external'){
event.preventDefault();
window.open('http://www.google.com', '_self');
}
});