例如,在app-view.js中,我看到一些事件绑定:
events: {
'keypress #new-todo': 'createOnEnter',
'click #clear-completed': 'clearCompleted',
'click #toggle-all': 'toggleAllComplete'
},
但在我看来,控制器中的路由可以完全取代事件绑定,例如:
var TodoRouter = Backbone.Router.extend({
routes: {
'*filter': 'setFilter',
'todo/add': 'add',
'todo/edit/:id': 'edit',
'todo/delete/:id': 'delete'
},
add: function () {...},
edit: function () {...},
......
});
只需用链接替换按钮,我认为使用路线使其更像mvc应用,就像ASP.NET MVC
为什么它仍然使用事件绑定?
答案 0 :(得分:1)
你的问题很好,但举一个例子:
1.假设您为单个视图使用了不同事件的路由。您的所有点击都将进入完全不需要的路由器
2.现在有10个不同的视图,其中有20个不同的点击。
你会在路由器中分配吗?按钮单击或按键单击不是一条不同的路线
它们只是您应该在特定视图中处理的事件
3.此外,骨干路由仅在散列更改时触发。如果您使用路由器进行事件,则可能是骨干网将允许您在该路线未更改后单击一次。因此,下一次单击事件将不会被捕获。
因此,将每个功能保持独立是一个很好的做法,以便它能够发挥最佳性能并且代码也可以管理。