Disponibilité des éléments de l'interface utilisateur dans Marionette.View
J'aimerais juste comprendre les décisions de derrière de la colonne vertébrale.Marionnette de vue sur les éléments de l'INTERFACE utilisateur.
Lors de l'instanciation d'une Marionnette.Vue sur un élément du DOM, comme ceci:
view = new Marionette.ItemView({
el: "#element",
ui : {
whatever : "#whatever"
}
});
Je suis en mesure d'accéder view.$el
le sélecteur jquery à l'intérieur de view.initialize
so far so good.
Cependant, lorsque j'essaie d'accéder à view.ui.whatever
, je n'ai accès qu'à le sélecteur, c'est à dire la chaîne de caractères "#que ce soit" à la place de la $("#whatever")
sélecteur jquery.
La raison pour cela est parce que Marionette.View.bindUIElements()
est appelée uniquement sur render
et pas avant initialize
.
Je voudrais savoir si vous pensez que ce comportement est logique et pourquoi?
Je ne suis que de demander dans le cas de la fixation de la vue à un el
si la vue est créée avec un modèle, je comprends pourquoi la liaison est en render()
.
source d'informationauteur Filip Novotny | 2013-03-09
Vous devez vous connecter pour publier un commentaire.
Attacher une vue d'un élément existant est l'exception. La vue normale du cycle de vie implique l'appel de
render
et sans qu'il n'y aurait rien pour les éléments d'INTERFACE utilisateur à se lier à.Appelez simplement
this.bindUIElements()
dans votreinitialize
méthode lorsque vous avez besoin de joindre une vue d'un élément existant.Lorsque je travaille avec des Marionnettes, j'ai mis le code pour accéder à l'interface des éléments à l'intérieur de la onShow méthode. Cet événement est déclenché après que le dom est prêt et les éléments sont prêts à être manipulés. À l'intérieur de cette méthode, votre interface utilisateur.quel que maintenant pointer sur un élément et non pas une chaîne.
Je pense que vous avez ce problème parce que vous avez accès à l'élément avec jQuery
Parce que "cela" est déjà une instance de vue.
Voir: http://marionettejs.com/docs/v2.4.4/marionette.itemview.html#organizing-ui-elements