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