Je rencontre des problèmes de compréhension de la liaison d'événements dans une sous-vue Backbone. Mon point de vue est défini comme suit:Comment lier un événement click dans une sous-vue Backbone
TenantView = Backbone.View.extend({
events: {
"click": "setActive"
},
initialize: function() {
this.parentEl = this.options.parentEl;
return this.render();
},
template: new EJS({
url: '/scripts/templates/tenant.ejs'
}),
render: function() {
$(this.parentEl).children('ul').append(this.template.render(this.model));
return this;
},
setActive: function(event) {
return this.model.set('active', true);
}
});
Le modèle consiste simplement d'un li
containg un a
. Fait de cette façon, les clics sur les événements de ma vue ne sont pas interceptés, ma méthode setActive
n'est jamais déclenchée.
Lorsque j'étend ma vue par une propriété el
comme el: 'li'
l'une de mes (2) vues agit correctement et déclenche la fonction setActive
. La deuxième vue ne réagit pas du tout. Si j'inspecte la propriété el
lors de l'initialisation des vues, la propriété el
de la vue de travail pointe vers la droite li
, les vues défaillantes el
pointent vers la première li
qui se trouve dans la page.
Comme on peut le voir, je suis totalement perdu quand il s'agit de la signification de la propriété el
.
La question est, comment puis-je lier un clic sur la vue à cette fonction très vues setActive
?
Quelqu'un peut-il m'éclairer s'il vous plaît?
Cordialement Felix
Cyclone, merci pour votre réponse. En fait, c'est presque ce que je fais. La propriété parentEl pointe vers la propriété el de CollectionViews (qui est un ul), afin que je puisse rendre mes ChildViews dans le ul. Dans mon parent, CollectionView, je parcours les modèles de collections et crée une instance ChildView pour chacun. J'ai le sentiment que cette approche est totalement fausse. – GeorgieF
Hmmm, c'est ce que j'ai suivi, fonctionne plutôt bien pour moi :) – Cyclone
Lecture [this] (http://stackoverflow.com/questions/5624929/backbone-view-el-confusion) effectivement résolu mon problème. Voir mon commentaire ci-dessous. Merci encore pour la contribution. – GeorgieF