Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如果未找到状态,则重定向到外部链接_Angularjs_Angular Ui Router - Fatal编程技术网

Angularjs 如果未找到状态,则重定向到外部链接

Angularjs 如果未找到状态,则重定向到外部链接,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我正在构建一个angular应用程序,如果找不到状态(“否则”),我需要将用户重定向到外部链接 我正在使用UI路由器 找不到任何例子。 任何帮助都将不胜感激 更新: 我能够通过将函数传递给以下对象来实现重定向到外部链接: $urlRouterProvider.otherwise(function() { window.location.href = 'http://www.google.com'; }); 谢谢你的帮助,很抱歉不够清晰 您可能需要stateNotFound事件: a

我正在构建一个angular应用程序,如果找不到状态(“否则”),我需要将用户重定向到外部链接

我正在使用UI路由器

找不到任何例子。 任何帮助都将不胜感激

更新

我能够通过将函数传递给以下对象来实现重定向到外部链接:

$urlRouterProvider.otherwise(function() {
    window.location.href = 'http://www.google.com';
  });

谢谢你的帮助,很抱歉不够清晰

您可能需要
stateNotFound
事件:

angular.module('myApp', ['ui.router'])
.config(function($stateProvider) {

})
.run(function($rootScope, $window) {
  $rootScope.$on('$stateNotFound', function(){
    // go somewhere else
    $window.open('//google.com');
    // or use $window.location = url here;
  });
});

窗口。打开(“链接到外部资源”)如何在“状态”内部实现它?也许你可以重定向到一个控制器控制重定向的状态。没有想到,让我试着给你回复。谢谢!:)@伊利亚索科洛夫斯基你所做的并不典型。听起来你有X/Y问题。你问的是如何解决问题,而不是如何解决问题。这是另一个问题。几乎总是最好定义一条路线并对其进行处理,而不是故意指定一条不存在的路线。正如德布拉顿指出的,你可以使用那个州的控制器。您还可以使用
$rootScope.$on('stateChangeStart',函数(e,toState){if(toState=='your state name'){$window.location=//etc}})
由于某些原因,它不会重定向,我只配置了一个状态:X@IliaSokolovski我不知道你在说什么。我包括了一个演示该解决方案的现场演示—它可以工作。如果你有进一步的问题,你需要分享你的代码,最好也创建一个现场演示。我已经创建了一个现场演示,它与我的非常接近,稍微修改了你的-@IliaSokolovski代码很好。这是一个跨域问题,因为您使用了
\u self
。这就是为什么我没有使用
location=url
。你需要在新窗口中打开它。您应该观察开发人员控制台<代码>拒绝显示'https://www.google.com/?gws_rd=ssl'在一个框架中,因为它将'X-frame-Options'设置为'SAMEORIGIN'
@IliaSokolovski这里有一个演示,其中另一个服务器允许跨域。很好用: