Backbone pushState和Laravel 4 - 路由不起作用

时间:2013-03-19 11:53:32

标签: backbone.js laravel laravel-4

我有一个非常简单的laravel 4设置,带有1个控制器用于旅行。 现在另一个简单的Backbone设置与路由器和路由到常规路由,如tripstrips/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) ;
}
});

1 个答案:

答案 0 :(得分:0)

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

'*actions':                 'defaultAction'

然后在路由器中添加:

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

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

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

希望这有帮助。