BACKBONE / JS最佳实践:在视图中初始化模型是好还是坏?

时间:2014-10-06 09:51:34

标签: backbone.js backbone-views backbone-model

My Backbone.View看起来像这样:

define(["promise!table_config", "BBModel"], function (config, myModel) {
    "use strict";

    return Backbone.View.extend({
        initialize: function () {
            this.model = new myModel({
                foo: config
            });
            ...
        },
        render: function () {
            ...
        }
    });
});

在视图中初始化模型是好的还是坏的做法? 特别是在这种情况下,在require.js模块中,'config'是require-promise,激励我将模型放入视图中。

1 个答案:

答案 0 :(得分:2)

虽然Backbone确实有ModelView类,但它不是严格的MVC框架(例如,它缺少Controller类)。 Backbone文档页面解释了(强调我的):

  

Backbone如何与"传统" MVC?

     

模型 - 视图 - 控制器模式的不同实现往往不同意   关于控制器的定义。 如果它对Backbone有帮助,   View类也可以被认为是一种控制器,   使用HTML模板调度源自UI 的事件   作为真实的观点。我们将其称为View,因为它代表了一个   UI的逻辑块,负责单个DOM的内容   元件。

考虑到这一点,即使(正如@Evgenly在评论中提到的)"它不是对实例模型的责任,它的控制器任务" ...由于Backbone View (概念上)是一个控制器,因此在视图中创建模型绝对有意义。

但抛开这个理论,这是一个更实际的答案。我在一个3岁以上的Backbone应用程序以及其他两个开发人员(以及之前的更多)上工作。在该应用程序中,绝大多数模型都是在视图中创建的(剩下的几个模型在路径中创建)。这不仅对我们来说不是问题,而且我甚至无法想象其他任何方式。