J'ai une collection Backbone que j'essaie de rendre dans la vue. Les données JSON semblent correctes, mais je ne peux pas accéder aux valeurs à partir de la vue.Collection de rendu Backbone.js dans View
est ici la collection de base:
define(['backbone', 'BaseModel'], function(Backbone, BaseModel) {
var BaseCollection = Backbone.Collection.extend({
model: BaseModel,
url: "/collection/get?json=true",
initialize: function() {}
});
return BaseCollection;
});
est ici la vue:
define(['backbone', 'BaseCollection'], function(Backbone, BaseCollection) {
var BaseView = Backbone.View.extend({
el: $('#baseContainer'),
template: _.template($('#baseTemplate').html()),
initialize: function() {
_.bindAll(this);
this.collection = new BaseCollection();
this.collection.bind('all', this.render, this);
this.collection.fetch();
},
render: function() {
//This returns 3 objects which is correct based on the JSON data being returned from the server
console.log(this.collection.toJSON());
var html = this.template(this.collection.toJSON());
this.$el.html(html);
return this;
},
});
return BaseView;
});
Je pense que je dois itérer this.render
pour chaque modèle de la collection. Mais, je ne suis pas sûr, parce qu'il ne devrait pas «rendre» jusqu'à ce qu'il complète toutes les itérations.
Toutes les suggestions seraient super! Je vous remercie!
pouvez-vous nous montrer votre modèle? Je suppose que vous devez modifier le paramètre que vous passez à 'this.template()', ou modifier le template lui-même. Vous pouvez utiliser 'collection.each' dans votre modèle pour faire défiler tous les modèles de la collection (cependant, il est recommandé de créer des sous-vues pour chaque modèle si vous liez beaucoup d'événements spécifiques au modèle) – jackwanders