1

这是我在 Sinatra 中的代码:

get '/' do
  @title = 'AngularJS html5Mode: true'
  haml :main
end

和 AngularJS:

  angular.module('myApp', ['ngResource']).config(function($routeProvider, $locationProvider) {
    $routeProvider.when('/sweets/:id', {
      templateUrl: '/sweet.html',
      controller: 'SweetCtrl'
    }).otherwise({
      redirectTo: '/'
    });
    $locationProvider.html5Mode(true);
  });

这很完美,但是在使用/sweets/1url 重新加载页面后,Sinatra 抛出异常,因为 AngularJS 在客户端更改了 url,而 Sinatra 找不到 url 路径,这对于 Sinatra 来说是绝对正确的行为。现在的问题是如何在 Sinatra 中处理这种类型的异常?我应该定义哪条路线?请注意,在其他情况下,我仍然需要 Sinatra 来引发异常。

4

1 回答 1

1

您需要允许 sinatra 中的所有路由与您的角度路由配置相同。所以,

get '/' do
  @title = 'AngularJS html5Mode: true'
  haml :main
end
get '/:id' do
  @title = 'AngularJS html5Mode: true'
  haml :main
end
于 2013-08-12T08:20:19.800 回答