Meteor Backbone Routing防止页面刷新

时间:2013-02-19 05:55:01

标签: backbone.js meteor

我正在开发单页Meteor应用程序,并且正在使用Backbone.js处理路由。我尝试像旋转木马一样浏览页面,因此当我单击导航中的菜单项时,页面将向左或向右滑动以显示所选页面。但是,问题是每当我点击链接时整个页面都会重新加载,这会干扰轮播过渡。我想在单击链接时阻止页面重新加载,就像AngularJS所做的那样,但我有麻烦使它工作。我试图不使用#link,因为spiderable meteor包说只有真正的链接才能被蜘蛛看到。有没有人有解决方案?

这是HTML:

<div id="main-navbar" class="navbar">
  <div class="navbar-inner rectangle-navbar">
    <div class="container">
      <ul class="nav">
        <li><a href="/">Home</a></li>
        <li><a href="/login">Login</a></li>
      </ul>
    </div>
  </div>
</div>

这是Coffeescript:

Router = Backbone.Router.extend
  routes: 
    "":                 "main"
    "login":            "login"

  login: -> 
    slideCarousel 0, false

  main: -> 
    slideCarousel 1, true

appRouter = new Router
Meteor.startup -> 
  Backbone.history.start pushState: true

slideCarousel = (slideId, visibility) ->
  $("#content").carousel slideId
  $('#content').carousel "pause"
  if visibility == false
    $("#landing").hide "slow"
  else
    $("#landing").show "slow"

1 个答案:

答案 0 :(得分:1)

尝试使用http://backbonejs.org/#Router-navigate导航而不是直接网址,试试这个,如果有效,你可以使用绑定事件处理程序:

<li><a href="/" onclick="Router.navigate('/');return false;">Home</a></li>
<li><a href="/login" onclick="Router.navigate('/login');return false;">Login</a></li>

我对这种设置有点不确定它是不寻常的附加url的旋转木马。你有没有在任何地方工作?