Angular.js路由:如何到达端点路由?

时间:2014-11-02 10:16:01

标签: javascript angularjs node.js express url-routing

在尝试了所有我能想象的东西,并在这里阅读了几篇文章后,我想我需要你的帮助! 我有一个基于节点的webapp和服务器上的express和客户端上的Angular。我正在使用角度路由。

基本信息

我的路由设置如下:

mainApp.config(['$routeProvider',
        function($routeProvider) {
            $routeProvider
            .when('/home', {
                templateUrl: 'initial.ejs',
                controller: 'controllerInitialView'
            })
            .when('/home/post', {
                templateUrl: 'post.ejs',
                controller: 'controllerAddPost'
            })
            .... other /home/something routes ..
            .otherwise({
                redirectTo: '/home'
            });
            }
           ]);

html模板的组织如下:

<div class="container-fluid">
      <div class="row">
      <!-- Left Columns: With links to views -->
      <div class="col-xs-2 home-bd-dx">
       <ul>
        <li>
          <a href="/home/post"> Post </a>
        </li>
        ...
        <li>
          <a href="/logout"> Logout </a>
        </li>
      </ul>
     </div>

    <!-- Central Columns: Here the views are inserted -->
    <div class="col-xs-10">
      <div ng-view></div>
    </div>

   </div>
  </div>

问题在于Logout链接。我有一个服务器serverapp.get('/logout')链接,它使用passport.js注销用户。但是,我无法达到该链接。无论我尝试将我的/logout转换为/home/logout,它都由Angular而不是服务器处理。

问题

所以这就是问题:如何在没有Angular路由器拦截它们的情况下在Angular中创建端点路由的链接?

如果需要,还有其他信息

快速服务器有一个路由serverapp.get('/home/*'),它通过返回我在上面描绘的模板将这些路由委托给Angular.js。

我在<base href="/home">中使用<head>标签尝试了没有运气

我尝试创建路径'/ home / logout',然后在$window.location.href="/logout";的控制器中设置角度/home/logout。在这种情况下也没有运气。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您尝试执行的操作就是禁用某些网址的深层链接。您可以通过将target="_self"添加到<a>代码来实现这一目标。

试试这个:

<a href="/logout" target="_self">Logout</a>

现在,链接所指向的URL将由服务器而不是Angular处理。