0

例如,在 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

为什么它仍然使用事件绑定?

4

1 回答 1

1

您的问题很好,但举个例子:

1.假设您为单个视图使用不同事件的路线。您的所有点击都将进入路由器,这完全不需要。

2.现在您有 10 个不同的视图,其中有 20 次不同的点击。
你会在路由器中分配它吗?按钮单击或按键单击不是不同的路线。
它们只是您应该在该特定视图中处理的事件。

3.Also主干路由仅在哈希更改时触发。如果您将路由器用于事件,那么可能主干将允许您在该路由未更改后单击一次。因此,不会捕获下一个单击事件。

因此,将每个功能分开是一个很好的做法,这样它才能发挥最佳作用,代码也将变得易于管理。

于 2014-04-29T14:05:46.230 回答