1 нет массивов, но коллекции
Всегда, что вы думаете в Array
из Models
в Backbone, думайте в Collection
.
Теперь вам нужно внедрить коллекцию MyModels и сохранить один ее экземпляр в вашем MyModel экземпляре.
// code simplified and not tested
MyModel = Backbone.Model.extend({
initialize: function() {
this.nestedMyModels: new MyModels();
},
addMyModel: function( model ) {
this.nestedMyModels.add( model );
}
});
MyModels = Backbone.Collection.extend({
model: MyModel
});
2 использовать виды для рендеринга
Всегда, что вы думаете в render
, мыслите в View
.
И рекомендуемый способ заключается в том, что если у вас есть Collection
и Model
, лучше иметь View
для каждого. Таким образом, представление коллекции будет вызывать представление модели в итерации:
// code simplified and not tested
MyModelView = Backbone.View.extend({
render: function(){
this.$el.html( model.get("name") );
var view = new MyModelsView({ collection: this.model.nestedMyModels });
this.$el.append( view.render.el );
return this;
}
});
MyModelsView = Backbone.View.extend({
render: function(){
this.collection.each( function( model ){
var view = new MyModelView({ model: model });
this.$el.append( view.render.el );
});
return this;
}
});