Ho un metodo di rendering in Backbone che va sostanzialmente in questo modo:Chiamare un plugin jQuery in un Backbone render metodo
render: function() {
$.tmpl(this.template, attrs).appendTo(this.el);
return this;
},
che viene chiamato da un'azione di router:
action: function() {
$('#container').empty();
$('#container').append(myView.render().el);
},
Ora, desidera applicare un plug-in su elementi label
all'interno di questa vista. Il mio primo pensiero è stato quello di lanciare il plugin all'interno render
:
render: function() {
$.tmpl(this.template, attrs).appendTo(this.el);
this.$('label').inFieldLabels();
return this;
},
, ma questo non funziona (sto assumendo questo è perché l'elemento non è stato aggiunto al DOM ancora). Si fa lavoro se chiamo il plugin nell'azione router però:
action: function() {
$('#container').empty();
$('#container').append(myView.render().el);
myView.$('label').inFieldLabels();
},
preferirei non fare questo, perché il plugin è parte della vista, non il router, in modo da non fare senso di chiamarlo all'interno dell'azione. C'è un modo migliore per farlo?
Grazie - che è essenzialmente ciò che intendo per "modificare il codice in modo che il l'elemento viene aggiunto al DOM nel metodo 'render'". Per inciso, si può semplicemente fare 'this. $ ('Label')', che è una scorciatoia per '$ ('label', this.el)'. – Skilldrick
grazie! non lo sa;) –