这可能是一个非常简单的问题,在视图中,我将"点击"事件绑定到按钮,当点击该事件时,我希望重定向到一个全新的页面(例如,不是路线).
例如
events : {
"click .button" : 'redirect'
},
redirect : {
window.location('otherlink');
}
Run Code Online (Sandbox Code Playgroud)
我可以使用window.location,但似乎这是错误的方式?任何想法赞赏?
Ste*_*hen 13
Backbone有一个'路由器'(这基本上就是我作为控制器所知道的).您可以使用它来进行导航.例如:
var MyApp = new Backbone.Router();
MyApp.navigate('newPage', {trigger: true});
Run Code Online (Sandbox Code Playgroud)
触发器确保在您使用所述事件时抛出事件.
您可以使用Backbone的"历史记录"将路由器组合在一起,并且可以非常轻松地构建一个非常棒的单页应用程序.
编辑:没关系,我只是重新阅读你不想使用路线.我的两分钱 - 做一个包装为你做导航.几周前我只需要重构一个相当大的javascript应用程序,取出一百个左右的window.locations,以便它可以进行单元测试.没那么有趣.即:
MyApp = {
navigate: function (url) { window.location = url; }
}
Run Code Online (Sandbox Code Playgroud)
现在您可以实际进行单元测试,因为您可以使用在调用时不执行任何操作的内容覆盖MyApp.navigate.您还可以添加业务逻辑,如果需要..或过滤器..或其他任何东西..而不需要打扰应用程序的其余部分.例如,如果网址位于网站之外,请在新窗口中将其打开,而不是仅显示在同一网页中.
我只想使用一个简单的<a href="otherlink">Link Title</a>. 如果链接是动态的,我将依赖视图来呈现链接并管理其状态和href.
如果您需要在让用户进入辅助页面之前event.preventDefault()执行某些操作,请使用事件处理程序而不返回或避免返回false。
| 归档时间: |
|
| 查看次数: |
17208 次 |
| 最近记录: |