Passage d'arguments à une épine dorsale vue
Juste de commencer avec la colonne vertébrale. J'ai une vue générique qui peut rendre une collection sous forme de liste avec un titre. Je suis en train de passer de la collecte et de titre dans la méthode render, mais qui semble un peu étrange. Est-il une autre façon plus canonique?
E. g.:
var ListView = Backbone.View.extend({
template: _.template([
"<div>",
"<% if (title) { %><h2><%= title %></h2> <% } %>",
"<% if (items.length > 0) { %>",
"<ul>",
"<% items.each(function(item) { %>",
"<%= itemTemplate(item) %>",
"<% }); %>",
"</ul>",
"<% } else { %><p>None.</p><% } %>",
"</div>"
].join('')),
itemTemplate: _.template(
"<li><%= attributes.name %> (<%= id %>)</li>"
),
render: function(items, title) {
var html = this.template({
items: items /* a collection */,
title : title || '',
itemTemplate: this.itemTemplate
});
$(this.el).append(html);
}
});
var myView = new ListView({ el: $('#target') });
myView.render(myThings, 'My Things');
myView.render(otherThings, 'Other Things');
Vous devez vous connecter pour publier un commentaire.
Vous devez passer des attributs dans la
initialize()
fonction:Donc ici que vous devez passer les attributs d'un objet, comme suit:
Maintenant, vous avez les valeurs que vous avez passé accessibles tout au long de cette instance, dans le présent.options
De passer dans une collection, je vous recommande de créer une vue parent et un sous-vue:
Vous devriez toujours gérer les Modèles d'une Collection, non seulement les données de la collection.
Backbone.View
events
objet de laSubView
spécifiques à que modèle. Pour chaque point de Vue dynamique, il devrait toujours être un modèle.Vous devriez avoir un modèle pour votre vue et accéder à des propriétés du modèle lorsque le rendu de la vue.