Comment passer des paramètres à une vue
J'ai une série de boutons qui lorsqu'il est cliqué afficher un menu popup placé juste en dessous du bouton. J'ai envie de passer à la position du bouton de la vue. Comment puis-je le faire?
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?
}
});
Vous devez vous connecter pour publier un commentaire.
Vous suffit de passer le paramètre supplémentaire lorsque vous construisez la MenuView. Pas besoin d'ajouter de la
initialize
fonction.Et puis, dans
MenuView
, vous pouvez utiliserthis.options.position
.Mise à JOUR: Comme @mu est trop court unis, depuis la version 1.1.0, Épine dorsale des Vues plus joindre automatiquement les options passées au constructeur comme cela.options, mais vous pouvez le faire vous-même si vous préférez.
Dans votre
initialize
méthode, vous pouvez enregistrer leoptions
passé commethis.options
:ou d'utiliser certains plus fine des moyens que décrite par @Brave Dave.
this.options
, mais vous pouvez le faire vous-même si vous préférez.".this.options.position
, pasoptions.position
. Vues utilisées pour fixer leinitialize
arguments pourthis.options
mais qui a cessé de qui se passe en version 1.1.0.Ajouter un argument options de
initialize
:Et puis la passer dans certaines options lors de la création de votre vue:
Pour plus d'informations: http://backbonejs.org/#View-constructor
this.options
me donne de l'entretien et de débogage des cauchemars.this.options
initialize: function(options) { ... }
est tout simplement parfait, le changement est que l'épine Dorsale n'est plus automatiquement des ensembles dethis.options
pour vous: "l'épine Dorsale des Vues plus joindre automatiquement les options passées au constructeur commethis.options
, mais vous pouvez le faire vous-même si vous préférez.".initialize: function(options) { this.options = options }
serait bien?options
dans les propriétés est encore une meilleure idée. Si vous utilisezthis.options
tous sur la place, puis il est très difficile de savoir quel est votre point de vue de l'interface est vraiment ce qui a conduit à des problèmes de maintenance.Comme l'épine dorsale de la version 1.1.0, le
options
argument est plus attaché automatiquement à l'affichage (voir question 2458 pour la discussion). Maintenant, vous avez besoin pour fixer les options de chaque mode manuel:Alternativement, vous pouvez utiliser ce mini plugin à l'auto-joindre une liste blanche des options, comme suit:
passer de l'autre endroit
Ajouter un argument options pour initialiser en vue d'obtenir que le passé de la variable,
pour obtenir la valeur
utilisez -
Utilisation cette.options pour récupérer argumentr en vue
De Travail Exemple: http://jsfiddle.net/Cpn3g/1771/