将angularJs重定向到其他项目

时间:2016-11-14 13:39:19

标签: javascript angularjs backbone.js

我的网址如下:http://localhost:3000/family/#/savings/subscribe/123456

在这个页面中,我想点击一个按钮,将我重定向到使用主干JS制作的另一个项目的其他页面 我尝试使用href-和ng-href http://localhost:3000/admin#exemption添加所需的URI:但它总是将我重定向到http://localhost:3000/family/#/admin#exemption

   angular.module('app', ['ng', 'ngRoute', 'ui.bootstrap', 'angularMoment', 'chart.js'])
 .config(fac['$routeProvider', function ($routeProvider) {
    $routeProvider
  .when('/index', {
        templateUrl: '/family/index',
        controller: 'IndexCtrl'
      })
  .when('/family/exemption', {
        templateUrl: 'exemption-search-view'
      })

当我提供所需页面的模板时,我获取了html视图但是URI:http://localhost:3000/family/#/admin#exemption

4 个答案:

答案 0 :(得分:2)

我不确定这个问题,但如果你想避免角度路由拦截,你应该添加你的锚目标=“_ self”。

<a ng-href="{{vm.logoutUrl}}" target="_self">Bye!</a>

答案 1 :(得分:1)

如果您的其他项目不属于您的角应用,则应重定向到其他网址。

只需使用<a href="http://localhost:yourOtherPort"></a>

ng-href用于附加您在网址中的哈希值后传递的网址。

答案 2 :(得分:1)

不要使用href(或任何变体)重定向,而是尝试在控制器中使用一个函数,该函数会将您重定向到新的URL。尝试这样的事情:

public static Claim GetClaim(string claimType)
{
    return ClaimsPrincipal.Current.FindFirst(claimType);
}

public static string GetLoggedInUserEmail()
{
    //Email comes up for Auth0
    var claimEmail = GetClaim(ClaimTypes.Email);

    //if claimEmail comes out to be null from ClaimTypes.Email then try it out for ClaimTypes.Name
    if (claimEmail == null)
        //Name comes up for Azure AD
        claimEmail = GetClaim(ClaimTypes.Name);

    var email = (claimEmail == null ? string.Empty : claimEmail.Value); //gets the email of the user
    return email;
}

...并在你的HTML中......

    // in your controller
angular.module('app', ['ngRoute'])
  .controller('redirectCtrl', function($window, $location){

  var vm = this;

  vm.wizard = {
    anotherurl: "http://example.com",

    redirect: fnRedirect
  }

  return vm.wizard;

    function fnRedirect(link){
      //this way is useful if you try to redirect to an external URL
      $window.location = link;
      //this way is useful if you try to redirect to another route inside the same angular project
      $location.path(link);
    }
});

答案 3 :(得分:0)

Angular中的问题,它会将您重定向到其URL中的相同基础,因此如果您想要更改基础(在我的情况下是/ family /#/),就像您要访问外部URL一样从项目中我刚刚添加到我的控制器中:

$window.location.href ='http://localhost:3000/admin#exemption' ; 

我不需要在我的&#; $ routeProvider&#39;

中进行任何更新