我通常设置东西的方式是,我做的Backbone.Events重利用;我倾向于通过将这些事件绑定到视图中的方法来拦截视图中的点击事件。反过来,这界事件会做一些看法,具体的工作,然后会做一些像this.trigger("Router_SomeEvent")
- 指定该事件是,通常情况下,在视图中创建路由器,像这样绑定:
// Begin router snippet...
someRouteMethod: function() {
this.views.SomeViewInstance = new MyViews.SomeViewClass();
this.views.SomeViewInstance.bind("Router_SomeEvent", this.onSomeEvent);
},
onSomeEvent: function() {
this.navigate("NewLocation", { trigger: true });
}
// End router snippet
使用这种发布/订阅(pub /分)模式,你的代码变得更加解耦,更容易处理和扩展。起初有点令人困惑,但一旦掌握了它,它就变得越来越清晰,为什么它很有用。我倾向于让我的路由器处理所有......呃...路由,而我的视图只包含渲染逻辑,事件绑定到UI,并在必要时冒泡事件到路由器。您还可以将事件绑定到您的模型;我倾向于使用类似于视图的模型,他们会通知我的路由器有一些变化,路由器将继续处理该事件,通过更改视图状态,更改其他模型或集合等。
主干非常强大,但需要相当长的时间来学习。我推荐Addy Osmani的Backbone Fundamentals;他还有一本关于O'Reilly的书,这本书很棒。
该死的,这是过度工程这样一个简单的任务)) – 2012-07-10 17:47:34
我假设,如果你使用骨干开始,你试图做一些适度复杂:) – 2012-07-10 17:49:25
@mvblfst:我会说这取决于你期望应用程序的复杂程度。如果你只是简单地开发一个应用程序,那么你不需要所有这些东西,但今天的快速入侵是明天的企业级任务关键型应用程序,所以它从一开始就不会伤害到所有的东西。 – 2012-07-10 17:54:40