我有一个非常简单的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) ;
}
});
答案 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/'
});
希望这有帮助。