2013-05-14 62 views
5

我正在开发一个角度的应用程序,并有快速的问题。作为一个'单页面应用程序'角'接管'的URL映射,所以我可以从“/” - >'/ about'等导航,导航都发生在客户端在一个单一的页面。“外部”导航,以纠正angular.js网址(直接链接/刷新/等)

我想弄清楚的是如何在客户端导航被绕过时到达客户端上的正确页面。因此,例如,如果我点击'about'并转到'http://www.myapp.com/about',而不是去http://www.myapp.com,那么我如何处理直接转到'http://www.myapp.com/about'的用户,我明显可以将他们重定向到“/”,但我仍然就像他们期望的那样,他们会'/最终''结束'。同样,刷新也有相同的问题。如果我坐在'/ about'处,并且浏览器刷新,那么这个请求会在服务器上“/ about”并绕过应用程序,所以我需要重新加载应用程序的根目录,但是仍然回到/关于。

在此先感谢。

编辑: 感谢您的答复,我想也许我没有问清楚。我了解路由等在我的角度的应用程序。因此,在单击'/ about'href时,将其设置为加载“partials/about.html”。我的问题是,假设已经有效,用户直接访问“www.myapp.com/about”。角色应用程序在根上“生活”。所以假设服务器会重定向到'/'。这会加载应用程序,但不会对用户期望的路线“设置”角度。所以这个问题,有没有告诉应用程序“当你加载,去/关于”可能是基于引用或什么的。

回答

1

你在使用什么服务器?

您可以在路由器中创建一条全路由。 像match '*' => 'Angular#App'(Rails)的

或(快递)

app.use(function (req, res) { 
    res.writeHeader(200, {'Content-Type': 'text/html'}); 
    res.end(indexFileContent); 
}); 
+0

我正在使用node.js,所以很酷。但是这个例子能让用户回到正确的网址吗?这只会将主页面发回给他们吧?再次,我需要一个请求来说'/ about'被重定向到'/',并以某种方式告诉Angular,用户''真正'在'/ about' – 2013-05-14 21:03:30

+1

好吧,我有一个'时间'的时刻。我读过位置服务的东西等,但它没有点击,直到现在,你的答案。拥有所有的url或者至少所有的'application'url(我有一个/ rest的服务的/ api根)只是为根角页面提供角度来'弄清'它在加载时应该是的位置。 谢谢! – 2013-05-15 18:03:59

+0

很高兴帮助你:)。 – Ven 2013-05-15 18:37:05

0

我认为你是在谈论角客户端路由 - 而不是服务器端。无论如何,我的答案是假设这一点。

Angular包含一个路由服务,它允许您定义映射到基本服务器url之后的url的客户端路由。下面是如何设置它的示例:

angular.module('myApp',[]) 
.config(['$routeProvider', function($routeProvider) { 
    $routeProvider 
     .when('/', {templateUrl: '/home-partial', controller: 'HomeCtrl'}) 
     .when('/about', {templateUrl: '/about-partial', controller: 'AboutCtrl'}) 
     .when('/contact', {templateUrl: '/contact-partial', controller: 'ContactCtrl'}) 
     .otherwise({redirectTo: '/'}); 
    }]) 

只要你有在服务器端谐音设置和控制器的设置也一样,当用户浏览到每个URL,正确的控制器和部分会拉起来,你可以选择做任何你需要在每个控制器。

您还可以使用其他选项,我只是以这种方式使用路线。查看AngularJS documentation获取更多信息