如何避免太多的模型类



在我的应用程序中模型的数量增长很快。我想知道你们关于backbone.js的标准做法。假设你想创建一个视图,它需要另外两个模型。您是否创建一个新的模型类来包含像这样的两个模型:

var m = new TheModel({
  model1: new Model1,
  model2: new Model2
});
var view = new TheView({model:m});

或者你只是这样做:

var m = {
  model1: new Model1,
  model2: new Model2
};
var view = new TheView({model:m});

第二个似乎更好,因为我不需要额外的模型类TheModel。但是如果我混合了这两种方法,那么在我看来,我必须记住我使用的是哪种风格,因为如果我想访问model1model2,那么有两种不同的方式:

var m1 = this.model.get('model1');

或者在第二种方案中:

var m1 = this.model.model1;

你认为哪个更好??如何组织所有的模型和视图?

谢谢!

除非有理由链接您的模型,否则我不会创建一个聚合其他模型的新模型。第二个选项更好,因为你没有链接它们。

我更喜欢把它们分开:

var view = new TheView({purchases: purchasesModel, user: userModel });

然后,在视图中,不是引用this.model,而是专门引用this.purchasesthis.user

你看,视图上的model属性实际上只是一个约定。视图中的model属性没有什么特别之处,只是model属性会在构造函数中自动复制。除此之外,Backbone.View中没有对model的引用。

当然,这意味着你需要对它做些什么:

var TheView = Backbone.View.extend({
    initialize: function(options) {
        this.purchases = options.purchases;
        this.user = options.user;
    }
});

这样,您就明确了您所需要的多个模型。与版本2相比,我更喜欢这个版本,因为它对视图的要求没有那么明确。

在这种情况下应该使用集合。在这里您可以阅读更多关于集合:http://backbonetutorials.com/what-is-a-collection/

最新更新