0

我遇到了骨干路由和视图的问题。当我点击链接并且URL正确时,视图被正确呈现,但是问题是每当我刷新页面时,url仍然是相同的,但视图返回到索引视图,其中它应该呈现该路线下的视图导致事件处理不当。refesh上的主干视图渲染

这里的路由器:

var MainRouter = Backbone.Router.extend({ 
    initialize: function() { 
//  homeView.render(); 
    }, 
    routes: { 
     '': 'index', 
     'register': 'register' 
    } 
}); 

var mainRouter = new MainRouter(); 

router.on('route:index', function() { 
    if (htmlObj.hasClass('connected')) { 
     if (htmlObj.hasClass('present')) { 
      profileView.render(); 
     } 
     homeView.render(); 
    } 
}); 

router.on('route:register', function() { 
    signUpView.render(); 
}); 

Backbone.history.start();

,然后在视图事件我设置triggertrue

Backbone.history.navigate('#/signup', {trigger: true});

因此,这将运行特定路由的功能。 我也尝试过使用pushState and root,但它在刷新时有同样的问题,但这次它说那个页面没有找到。

感谢

回答

0

请试试这个代码:

var MainRouter = Backbone.Router.extend({ 
    routes: { 
     "": "index", 
     "register": "register", 
    }, 
    index: function() { 
     if (htmlObj.hasClass('connected')) { 
      if (htmlObj.hasClass('present')) { 
       profileView.render(); 
      } 
      homeView.render(); 
     } 
    }, 

    register: function() { 
     signUpView.render(); 
    } 

}); 

$(document).ready(function() { 
    var r = new MainRouter(); 
    Backbone.history.start(); 
    r.navigate(window.location.hash.replace('#',''),{trigger: true}); 
}) 
+0

我已经尝试实现这一个,但它并没有解决问题 – OneScrewLoose 2014-09-18 21:53:37

+0

尝试添加[浏览](HTTP:// backbonejs。 org /#Router-navigate)调用。在正常情况下,它会触发指定的路线两次。尝试放置一些断点来调试你的代码。检查哪个功能在启动时触发。也许有HTML标记呈现。 – aleha 2014-09-19 06:45:47