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,激励我将模型放入视图中。
答案 0 :(得分:2)
虽然Backbone确实有Model
和View
类,但它不是严格的MVC框架(例如,它缺少Controller
类)。 Backbone文档页面解释了(强调我的):
Backbone如何与"传统" MVC?
模型 - 视图 - 控制器模式的不同实现往往不同意 关于控制器的定义。 如果它对Backbone有帮助, View类也可以被认为是一种控制器, 使用HTML模板调度源自UI 的事件 作为真实的观点。我们将其称为View,因为它代表了一个 UI的逻辑块,负责单个DOM的内容 元件。
考虑到这一点,即使(正如@Evgenly在评论中提到的)"它不是对实例模型的责任,它的控制器任务" ...由于Backbone View
(概念上)是一个控制器,因此在视图中创建模型绝对有意义。
但抛开这个理论,这是一个更实际的答案。我在一个3岁以上的Backbone应用程序以及其他两个开发人员(以及之前的更多)上工作。在该应用程序中,绝大多数模型都是在视图中创建的(剩下的几个模型在路径中创建)。这不仅对我们来说不是问题,而且我甚至无法想象其他任何方式。