5

我正在开发一个有角度的应用程序并且有一个快速的问题。作为一个“单页应用程序”,角度“接管”了 URL 映射,所以我可以从“/”->“/about”等导航,并且导航都发生在客户端的单个页面中。

我想弄清楚的是当绕过客户端导航时如何到达客户端上的正确页面。因此,例如,不是去http://www.myapp.com,然后单击“关于”并转到“ http://www.myapp.com/about ”,我该如何处理用户直接转到“ http://www.myapp.com/about ',我显然可以将它们重定向到“/”,但我仍然希望它们在“/about”处“结束”,因为这是他们所期望的。同样,刷新时也有同样的问题。如果我坐在“/about”处并刷新浏览器,该请求将转到服务器上的“/about”并绕过应用程序,所以我再次猜测,需要在根目录重新加载应用程序,但是仍然回到/about。

提前致谢。

编辑:感谢您的回复,我想也许我没有清楚地提出这个问题。我了解我的角度应用程序中的路由等。因此,当单击“/about”href 时,将其设置为加载“partials/about.html”。我的问题是,假设这已经奏效,用户会直接访问“www.myapp.com/about”。角度应用程序“生活”在根上。所以大概,服务器会重定向到'/'。这会加载应用程序,但不会“设置”与用户期望的路线成角度。所以问题是,有没有办法告诉应用程序“当你加载时,去/关于”也许基于推荐人或其他东西。

4

2 回答 2

1

你用的是什么服务器?

您可以在路由器中创建一个包罗万象的路由。喜欢match '*' => 'Angular#App'(导轨)

或(表达)

app.use(function (req, res) {
  res.writeHeader(200, {'Content-Type': 'text/html'});
  res.end(indexFileContent);
});
于 2013-05-14T18:34:37.943 回答
0

我认为您在谈论 Angular 中的客户端路由,而不是服务器端。无论如何,我的回答是假设这一点。

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文档以获取更多信息

于 2013-05-15T03:17:09.183 回答