J'ai une série de boutons qui, lorsqu'ils sont cliqués, affichent un menu contextuel placé juste en dessous du bouton. Je veux passer la position du bouton à la vue. Comment puis je faire ça?
ItemView = Backbone.View.extend({
tagName: 'li',
events: {
'click': 'showMenu'
},
initialize: function() {
_.bindAll(this, 'render');
},
render: function() {
return $(this.el).html(this.model.get('name'));
},
showMenu: function() {
var itemColl = new ItemColl();
new MenuView({collection: itemColl}); // how to pass the position of menu here?
}
});
la source
this.options
, mais vous pouvez le faire vous-même si vous préférez." .this.options.position
, nonoptions.position
. Vues utilisées pour attacher lesinitialize
argumentsthis.options
mais cela s'est arrêté dans la version 1.1.0.Ajoutez un argument d'options à
initialize
:Et puis transmettez certaines options lorsque vous créez votre vue:
Pour plus d'informations: http://backbonejs.org/#View-constructor
la source
this.options
me donne des cauchemars de maintenance et de débogage.this.options
initialize: function(options) { ... }
C'est très bien, le changement est que Backbone ne définit plus automatiquementthis.options
pour vous: "Les vues de Backbone n'attachent plus automatiquement les options passées au constructeur commethis.options
, mais vous pouvez le faire vous-même si vous préférez." .Depuis le backbone 1.1.0, l'
options
argument n'est plus automatiquement attaché à la vue (voir le numéro 2458 pour discussion). Vous devez maintenant attacher manuellement les options de chaque vue:Vous pouvez également utiliser ce mini plugin pour attacher automatiquement les options de la liste blanche, comme ceci:
la source
passer d'un autre endroit
Ajoutez un argument d'options pour initialiser dans la vue que vous obtenez cette variable passée,
pour obtenir la valeur, utilisez -
la source
Utilisez this.options pour récupérer l'argumentr dans la vue
Exemple de travail: http://jsfiddle.net/Cpn3g/1771/
la source