2012-02-20 68 views
7

这可能是一个超级简单的问题,在视图中,我将“click”事件绑定到按钮,单击该事件时我希望重定向到全新的页面(例如,不是路由)。backbone转到另一个页面

例如

events : {  
    "click .button" : 'redirect' 
}, 
redirect : { 
    window.location('otherlink'); 
} 

我可以使用window.location,但似乎这是错误的方式?任何想法赞赏?

回答

2

我会简单地使用一个简单的<a href="otherlink">Link Title</a>。如果链接是动态的,我将依赖视图来呈现链接并管理其状态,并且href

如果您需要做的事情之前让用户去二级页面的使用和事​​件处理程序没有event.preventDefault()或避免返回false

13

骨干有一个'路由器'(这基本上是我所知道的一个控制器)。你可以用它来做导航。例如:

var MyApp = new Backbone.Router(); 
MyApp.navigate('newPage', {trigger: true}); 

触发器确保在您使用上述事件时引发事件。

您可以将路由器与Backbone的“历史记录”组合起来,并非常容易地构建一个非常棒的单页应用程序。

编辑:没关系,我只是重新读到你不想使用路线。我的两分钱 - 为你做导航。几个星期前,我不得不重构一个非常大的JavaScript应用程序,取出了一百个左右的window.locations,以便它可以进行单元测试。没那么好玩。即:

MyApp = { 
    navigate: function (url) { window.location = url; } 
} 

现在你可以真正做单元测试,您可以覆盖MyApp.navigate利用所谓的时什么都不做。您还可以添加业务逻辑,如果需要..或过滤器..或其他任何..不需要打扰其他应用程序。例如,如果网址位于网站之外,请在新窗口中打开它,而不是仅显示在同一个网页中。