【问题标题】:Is this a correct implementation of the backbone.js MVC pattern?这是backbone.js MVC模式的正确实现吗?
【发布时间】:2011-07-05 08:56:23
【问题描述】:

我正在使用 backbone.js 重构一个旧应用。

通过 TodoList tuto 时,但我仍然不确定所有内容应该如何组合在一起。

现在,我有:

  • 一个已初始化的GlobalController,它处理全局应用范围的路由和其他对象初始化。

  • 这个GlobalController 初始化一个GlobalAppView(全局应用范围的操作,比如如何处理ajax 点击),然后,我的应用中的所有其他控制器。

  • 那些控制器,比如TagController,初始化它自己的集合,(一个BlueTagList和一个RedTagList,扩展了一个App.TagList集合),存储在window命名空间中(应该是在控制器命名空间中?)。

  • 然后,控制器在我看来某处被调用,TagsController->render('BlueTagListView', {el: '#container', collection : BlueTagList, data : ...});

这个方案有流程吗? 谢谢。

【问题讨论】:

    标签: model-view-controller backbone.js


    【解决方案1】:

    我个人认为,如果 Backbone.js 稍微重命名一下,事情会更清楚。

    Models      ->  Models
    DOM subtrees->  Views ( view.el in the backbone case )
    Views       ->  Controllers
    Controllers ->  HashchangeController ( A specialized type of controller )
    

    Backbone.js 是一个 MVC 框架,但它只是命名约定有点奇怪。它有点暗示你必须使用 Backbone.Controller 或者你只是在做一个模型/视图。但不要为此感到压力。

    构建一个没有 Backbone.Controller 的应用程序是完全可以的,除非你 真的需要可收藏的链接。如果你这样做了,那就很酷,但这不是绝对必要的。 URL 栏只是页面上的另一个小部件,您可以编写一个控制器来响应。

    也许如上所述考虑您的组件会让您更轻松。

    【讨论】:

    • 奇怪的是,昨天有一个新版本的 Backbone.js,所有者通过将 Controller 重命名为 Router 进行了重大更改。显然其他人和我的观察结果一样。
    猜你喜欢
    • 2011-09-08
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多