1

我有一个非常简单的 laravel 4 设置,带有 1 个用于旅行的控制器。现在另一个简单的 Backbone 设置,带有一个路由器和路由到常规路由,如trips, trips/create. 我想使用 pushState: true 来获得漂亮的 URL,但我似乎无法让它工作。当我尝试访问 URL 时,它会将我发送到服务器提供的带有我的 json 数据的页面。

但是,如果我输入:www.mysite.com/#trips我被“重定向”到www.mysite.com/trips,然后我的这个特定路由的方法就会触发。

这是我的路由器:

App.Router = Backbone.Router.extend({
routes: {
    '': 'index',
    'trips':            'trips',
    'trips/create':     'newTrip',
    'trips/:id':        'showTrip'
},

index: function(){

},

trips: function(){
    console.log('All trips') ;
},

newTrip: function(){

    console.log('New trip') ;

},

showTrip: function(id){
    console.log('trips id:' + id) ;
}
});
4

1 回答 1

0

这可能是由于 Backbone 路由器无法将 URL 与您的 Backbone 路由匹配造成的。要调试,请将其添加到您的路由中:

'*actions':                 'defaultAction'

然后在路由器中添加:

defaultAction: function(path) {
    console.log('Route "' + path + '" not defined, redirecting to homepage!');
}

您可能会看到路径与您路线中的任何内容都不同。要解决此问题,您需要告诉 Backbone 路径的根。您在激活推送状态时执行此操作。

Backbone.history.start({
    pushState: true,
    root: 'http://mydomain.com/myapplication/'
});

希望这可以帮助。

于 2013-06-13T09:40:53.947 回答