【问题标题】:Backbone home route reloads page主干主路由重新加载页面
【发布时间】:2013-03-25 05:25:15
【问题描述】:

在一个非常简单的主干应用程序中,我尝试操纵路由,我让它们正常工作,但我只是想知道为什么指向主页的链接实际上会重新加载页面,而没有其他路由重新加载。

这是我的路由器:

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

index: function(){

    App.trips = new App.Collections.Trips ;

    App.trips.fetch().then(function(){

        new App.Views.App({ collection: App.trips });

    });
},

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

newTrip: function(){
    console.log('new trip') ;
    var new_trip = new App.Views.Trip.New ;

    $('#content').empty().append(new_trip.el) ;

},

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

【问题讨论】:

  • 链接是什么样的,它们是如何构造的?如果他们在视图代码中,您可以包含什么代码?
  • 您是否添加了事件处理程序以防止默认行为并调用“Backbone.history.navigate(...)”?除非您明确执行其他操作,否则链接将正常运行。
  • @StuartM 我的主页链接纯粹是:`主页

标签: backbone.js router


【解决方案1】:

如果您使用 Backbone 路由器或链接,您必须注意,只要您没有启用 pushstate(在您的浏览器和服务器上),每条路由都使用 # 处理。

所以如果你需要设置家庭链接使用#

like <a class="brand" href="#/">Home</a> 否则链接将作为原生 url 处理

【讨论】:

  • 谢谢。它适用于href="#/"。现在我尝试使用 pushState 但不知何故它不起作用。我使用 Laravel 4 作为后端,使用 Chrome 作为浏览器。它不应该工作吗?如果你能在这里看看我的问题 [link]stackoverflow.com/questions/15498793/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-15
  • 1970-01-01
  • 2018-03-13
  • 2020-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多