在我的应用程序中模型的数量增长很快。我想知道你们关于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
。但是如果我混合了这两种方法,那么在我看来,我必须记住我使用的是哪种风格,因为如果我想访问model1
或model2
,那么有两种不同的方式:
var m1 = this.model.get('model1');
或者在第二种方案中:
var m1 = this.model.model1;
你认为哪个更好??如何组织所有的模型和视图?
谢谢!
除非有理由链接您的模型,否则我不会创建一个聚合其他模型的新模型。第二个选项更好,因为你没有链接它们。
我更喜欢把它们分开:
var view = new TheView({purchases: purchasesModel, user: userModel });
然后,在视图中,不是引用this.model
,而是专门引用this.purchases
和this.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/